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/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/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
-
-
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/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/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..d14e5e615 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: 5b3a49d7e41f42124e0b6b941346220e
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..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
@@ -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: 7
+ 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
@@ -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..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
@@ -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: 87958d7451516de249651d644a629e18e28fa1dc:feabe138f229ccfb0e098c3423ec50ae1a4d6719f4e49a788f5e4956df39a88c
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: a589f3e8fa5e8e75f0b3d0ba53c268dce9d791df:e2abd04d36801939cb15da2c27abeeacc426070627417409f0c47a5ccf968eb3
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..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
@@ -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: 7
+ 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..3bfb02929 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: 4406e126c60d9b3890f7f2aec2f207da
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..0b454b83a 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: 9aece7b1fc6f591bbdbef60baa05dde3
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..d8f0c9413 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: acbfaa3baf732593a8d438b2ce4679fe
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..15f238a60 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: 08eff7c483bcd321187e1ceb00bb8de6
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: c5031bc7c8848ca7d1145607c098fdc5
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..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
@@ -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: e6b65d793cb3d71cc75aa3820033df17
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..aabd14103 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: d092ad21c02baef6de33d57c7d990977
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..5547595cf 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: 7e0061442dde6ee34e70fb477cf45e0f
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..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
@@ -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: f3b0b88842405661983a9e87204d8578
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..e0f886a8d 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: a0200f708fb8c51824b7cef887a90a0e
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: f4ccf1071a2f1c64bae58625e3862397
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..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
@@ -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: e661f4ff5c3ff394141907d0688494bc
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..d4d421e3c 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: 657e58098d281bc2ff609c9dd5689268
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: bf08c7cea56c9f92db316f9901beb85d
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..77d2f0c8b 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: c00fa54dd0bc7bc6de998b5f7f693932
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..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
@@ -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: afe4a49d4f5244d875e1e89352c48eb5
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..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
@@ -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: c45a7f011598b62b3d064937eefefde0
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..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
@@ -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: ZGVtbzp0ZXN0X3Rva2VuOmJHTTNhd0tMZzYrWUxOeGNTVHdJQWF1SndpM2s0Witl
+ 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..6a4e9084a 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: b7b33b64caba6cdd815f3e35b97eee8e
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..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
@@ -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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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..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
@@ -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,29 +476,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
@@ -529,16 +508,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
@@ -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
- type: dataset
- multivalue: false
- sources:
- - column: date
- dataType: DATE
- target:
- id: date
- type: date
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- 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
+ - 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
- 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- dataSourceTableId: demo-test-ds:order_lines
- dataSourceTablePath:
- - demo
- - order_lines
- workspaceDataFilterColumns:
- - name: wdf__region
- dataType: STRING
- - name: wdf__state
- dataType: STRING
- workspaceDataFilterReferences:
- - filterId:
+ tags:
+ - Order lines
+ title: Order lines
+ type: NORMAL
+ workspaceDataFilterColumns:
+ - dataType: STRING
+ name: wdf__region
+ - dataType: STRING
+ name: wdf__state
+ workspaceDataFilterReferences:
+ - 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:
+ - '1883'
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
- type: dataset
- multivalue: false
- sources:
- - column: date
- dataType: DATE
- target:
- id: date
- type: date
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- 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
+ - 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
- 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- dataSourceTableId: demo-test-ds:order_lines
- dataSourceTablePath:
- - demo
- - order_lines
- areRelationsValid: true
+ 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:
+ - '1764'
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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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..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
@@ -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,29 +476,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
@@ -529,16 +508,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
@@ -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
- type: dataset
- multivalue: false
- sources:
- - column: date
- dataType: DATE
- target:
- id: date
- type: date
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- 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
+ - 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
- 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- dataSourceTableId: demo-test-ds:order_lines
- dataSourceTablePath:
- - demo
- - order_lines
- workspaceDataFilterColumns:
- - name: wdf__region
- dataType: STRING
- - name: wdf__state
- dataType: STRING
- workspaceDataFilterReferences:
- - filterId:
+ tags:
+ - Order lines
+ title: Order lines
+ type: NORMAL
+ workspaceDataFilterColumns:
+ - dataType: STRING
+ name: wdf__region
+ - dataType: STRING
+ name: wdf__state
+ workspaceDataFilterReferences:
+ - 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:
+ - '1883'
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
- type: dataset
- multivalue: false
- sources:
- - column: date
- dataType: DATE
- target:
- id: date
- type: date
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- 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
+ - 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
- 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- dataSourceTableId: demo-test-ds:order_lines
- dataSourceTablePath:
- - demo
- - order_lines
- areRelationsValid: true
+ 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:
+ - '1764'
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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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..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
@@ -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
@@ -443,22 +422,23 @@ interactions:
relationships:
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
@@ -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:
+ - '1365'
+ 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..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
@@ -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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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..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
@@ -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:
@@ -73,6 +38,10 @@ interactions:
type: attribute
- id: revenue_per_customer
type: metric
+ - - id: customer_id
+ type: attribute
+ - id: percent_revenue_from_top_10_customers
+ type: metric
- - id: customer_id
type: attribute
- id: amount_of_active_customers
@@ -89,10 +58,6 @@ interactions:
type: attribute
- id: amount_of_top_customers
type: metric
- - - id: customer_id
- type: attribute
- - id: percent_revenue_from_top_10_customers
- type: metric
- - id: customer_name
type: attribute
- id: customers
@@ -143,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
@@ -203,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: order_lines
+ - id: revenue_trend
+ type: visualizationObject
+ - - id: date
type: dataset
+ - id: product_and_category
+ type: analyticalDashboard
- - id: date
type: dataset
- - id: product_revenue_comparison-over_previous_period
+ - id: percentage_of_customers_by_region
type: visualizationObject
- - id: date
type: dataset
- - id: revenue_trend
+ - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - id: date
type: dataset
- - id: product_and_category
- type: analyticalDashboard
- - - id: date
+ - id: order_lines
type: dataset
- - id: customers_trend
- type: visualizationObject
- - id: products
type: dataset
- id: order_lines
@@ -237,26 +202,26 @@ 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
@@ -285,6 +250,10 @@ interactions:
type: label
- id: campaign_id
type: attribute
+ - - id: campaign_name
+ type: label
+ - id: campaign_name
+ type: attribute
- - id: campaign_name
type: label
- id: revenue_per_usd_vs_spend_by_campaign
@@ -293,10 +262,6 @@ interactions:
type: label
- id: campaign_name_filter
type: filterContext
- - - id: campaign_name
- type: label
- - id: campaign_name
- type: attribute
- - id: campaign_name
type: label
- id: campaign_spend
@@ -327,7 +292,7 @@ interactions:
type: attribute
- - id: date.month
type: label
- - id: revenue_by_category_trend
+ - id: customers_trend
type: visualizationObject
- - id: date.month
type: label
@@ -335,15 +300,15 @@ interactions:
type: attribute
- - id: date.month
type: label
- - id: revenue_trend
+ - id: revenue_by_category_trend
type: visualizationObject
- - id: date.month
type: label
- - id: customers_trend
+ - id: percentage_of_customers_by_region
type: visualizationObject
- - id: date.month
type: label
- - id: percentage_of_customers_by_region
+ - id: revenue_trend
type: visualizationObject
- - id: date.quarter
type: label
@@ -369,14 +334,14 @@ interactions:
type: label
- id: order_line_id
type: attribute
- - - id: order_status
- type: label
- - id: order_status
- type: attribute
- - id: order_status
type: label
- id: revenue
type: metric
+ - - id: order_status
+ type: label
+ - id: order_status
+ type: attribute
- - id: order_status
type: label
- id: amount_of_valid_orders
@@ -387,23 +352,19 @@ interactions:
type: attribute
- - id: product_name
type: label
- - id: product_breakdown
+ - id: revenue_by_product
type: visualizationObject
- - id: product_name
type: label
- - id: percent_revenue_per_product_by_customer_and_category
+ - id: top_10_products
type: visualizationObject
- - id: product_name
type: label
- - id: product_name
- type: attribute
- - - id: product_name
- type: label
- - id: product_saleability
+ - id: product_breakdown
type: visualizationObject
- - id: product_name
type: label
- - id: product_revenue_comparison-over_previous_period
+ - id: percent_revenue_per_product_by_customer_and_category
type: visualizationObject
- - id: product_name
type: label
@@ -411,7 +372,7 @@ interactions:
type: visualizationObject
- - id: product_name
type: label
- - id: revenue_by_product
+ - id: product_saleability
type: visualizationObject
- - id: product_name
type: label
@@ -419,32 +380,44 @@ interactions:
type: visualizationObject
- - id: product_name
type: label
- - id: top_10_products
+ - id: product_name
+ type: attribute
+ - - id: product_name
+ type: label
+ - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - id: products.category
type: label
- - id: product_breakdown
- type: visualizationObject
+ - id: revenue-electronic
+ type: metric
+ - - id: products.category
+ type: label
+ - id: products.category
+ type: attribute
- - id: products.category
type: label
- id: revenue-clothing
type: metric
- - id: products.category
type: label
- - id: revenue_by_category_trend
+ - id: top_10_products
type: visualizationObject
- - id: products.category
type: label
- - id: revenue-electronic
- type: metric
+ - id: product_breakdown
+ type: visualizationObject
- - id: products.category
type: label
- - id: products.category
- type: attribute
+ - id: revenue_by_category_trend
+ type: visualizationObject
- - id: products.category
type: label
- id: percent_revenue_per_product_by_customer_and_category
type: visualizationObject
+ - - id: products.category
+ type: label
+ - id: revenue_and_quantity_by_product_and_category
+ type: visualizationObject
- - id: products.category
type: label
- id: revenue-home
@@ -453,21 +426,13 @@ interactions:
type: label
- id: revenue-outdoor
type: metric
- - - id: products.category
- type: label
- - id: product_revenue_comparison-over_previous_period
- type: visualizationObject
- - - id: products.category
- type: label
- - id: revenue_and_quantity_by_product_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: product_revenue_comparison-over_previous_period
type: visualizationObject
- - id: region
type: label
@@ -501,22 +466,22 @@ interactions:
type: metric
- id: customers_trend
type: visualizationObject
- - - id: amount_of_active_customers
- type: metric
- - id: amount_of_top_customers
- type: metric
- - id: amount_of_active_customers
type: metric
- id: percentage_of_customers_by_region
type: visualizationObject
- - - id: amount_of_orders
+ - - id: amount_of_active_customers
type: metric
- - id: amount_of_valid_orders
+ - id: amount_of_top_customers
type: metric
- - id: amount_of_orders
type: metric
- id: product_saleability
type: visualizationObject
+ - - id: amount_of_orders
+ type: metric
+ - id: amount_of_valid_orders
+ type: metric
- - id: amount_of_orders
type: metric
- id: revenue_trend
@@ -547,55 +512,55 @@ interactions:
type: visualizationObject
- - id: revenue
type: metric
- - id: revenue-clothing
- type: metric
- - - id: revenue
- type: metric
- - id: revenue_top_10
+ - id: total_revenue
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_per_product_by_customer_and_category
+ - 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: revenue-home
+ - id: percent_revenue
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_from_top_10_percent_products
- 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: revenue-outdoor
+ - id: amount_of_top_customers
type: metric
- - id: revenue
type: metric
- - id: revenue_per_customer
+ - id: percent_revenue_from_top_10_percent_products
type: metric
- - id: revenue
type: metric
- - id: revenue_per_dollar_spent
+ - id: revenue_top_10_percent
+ type: metric
+ - - id: revenue
type: metric
+ - id: revenue_and_quantity_by_product_and_category
+ type: visualizationObject
- - id: revenue
type: metric
- id: revenue_trend
type: visualizationObject
- - id: revenue
type: metric
- - id: percent_revenue
+ - id: revenue-home
type: metric
- - id: revenue
type: metric
- - id: revenue_by_product
+ - id: product_saleability
type: visualizationObject
- - id: revenue
type: metric
@@ -603,51 +568,51 @@ interactions:
type: metric
- - id: revenue
type: metric
- - id: revenue_top_10_percent
+ - id: percent_revenue_from_top_10_products
type: metric
- - id: revenue
type: metric
- - id: product_categories_pie_chart
- type: visualizationObject
+ - id: percent_revenue_in_category
+ type: metric
- - id: revenue
type: metric
- - id: total_revenue
+ - id: revenue_per_dollar_spent
type: metric
- - id: revenue
type: metric
- - id: product_breakdown
- type: visualizationObject
+ - id: revenue_top_10
+ type: metric
- - id: revenue
type: metric
- - id: revenue_by_category_trend
+ - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - id: revenue
type: metric
- - id: revenue-electronic
+ - id: revenue-clothing
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_from_top_10_percent_customers
- type: metric
+ - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
- - id: revenue
type: metric
- - id: percent_revenue_from_top_10_products
+ - id: percent_revenue_per_product
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_per_product
+ - id: revenue-outdoor
type: metric
- - id: revenue
type: metric
- - id: product_revenue_comparison-over_previous_period
- type: visualizationObject
+ - id: revenue_per_customer
+ type: metric
- - id: revenue
type: metric
- - id: revenue_and_quantity_by_product_and_category
+ - id: product_categories_pie_chart
type: visualizationObject
- - id: revenue
type: metric
- - id: amount_of_top_customers
+ - id: percent_revenue_from_top_10_percent_customers
type: metric
- - id: revenue_per_customer
type: metric
@@ -661,10 +626,6 @@ interactions:
type: metric
- id: percent_revenue_from_top_10_customers
type: metric
- - - id: revenue_top_10
- type: metric
- - id: percent_revenue_from_top_10_products
- type: metric
- - id: revenue_top_10
type: metric
- id: top_10_customers
@@ -673,6 +634,10 @@ interactions:
type: metric
- id: top_10_products
type: visualizationObject
+ - - id: revenue_top_10
+ type: metric
+ - id: percent_revenue_from_top_10_products
+ type: metric
- - id: revenue_top_10_percent
type: metric
- id: percent_revenue_from_top_10_percent_customers
@@ -731,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
@@ -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..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
@@ -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: 76a5ba2ba9ede577f58db80c4a6d855b
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..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
@@ -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: 9c789d5c0e063a866b911607e7365473
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..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
@@ -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: 6d086f3cc18fdf0cdf61ee6b3e96c028
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..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
@@ -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: dd63221c7b6e581544a025de5146b31e
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..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
@@ -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: 85e5f546b165f35d9d1ee4ee5d389947
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..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
@@ -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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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-02 13:25
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..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
@@ -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: 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: 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- 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
+ 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
- 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__region
+ - dataType: STRING
+ name: wdf__state
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:
+ - '1890'
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: 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
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
+ id: date
type: dataset
multivalue: false
+ sourceColumnDataTypes: null
+ sourceColumns: null
sources:
- - column: campaign_id
- dataType: INT
- target:
- id: campaign_id
- type: attribute
- isNullable: null
+ - column: date
+ dataType: DATE
+ isNullable: true
nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
+ 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
- isNullable: null
- nullValue: null
- sourceColumns: null
- sourceColumnDataTypes: null
- dataSourceTableId: demo-test-ds:order_lines
- dataSourceTablePath:
- - demo
- - order_lines
- areRelationsValid: true
+ 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__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:
+ - '1766'
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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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-02 13:25
+ 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..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
@@ -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: 0b40cdbc679d387db217b97dd6371541
+ 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: 43bafb9cd8fdca5fe7c015f6eeb337c9
+ 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: a7af6e55f5e1f240334a9336c62b8e5d
+ 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: 72a893ab621cc5bf12e05f1fb4a6c1c1
+ 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: ac625edd9c8abd35c204e08cf07b4b64
+ 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: 0b40cdbc679d387db217b97dd6371541
+ 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: 52d9568df1019274dfb0d93c9abf45a9
+ 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: b37d6a1305cfde23033b3fb0d1705798
+ 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: 4bc2c2be5287d77e628bbb7a14bb8e61
+ 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: a7af6e55f5e1f240334a9336c62b8e5d
+ 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..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
@@ -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: 35b81bb03c2c21e31f60813871b45198
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..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
@@ -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: c3a54dcb793721b42eb232e8be68e8c8
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..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
@@ -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: ec0b39c867c442deaebb59e78abd4695
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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: 6f50a9a19eef5c2c8e50aef1753d9f00
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: ba6e3d4c8d03ba247ccf0a907a5614ca
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ createdBy:
+ id: admin
+ type: user
+ id: campaign_spend
+ title: Campaign Spend
+ - content:
+ format: $#,##0
+ maql: SELECT SUM({fact/price}*{fact/quantity})
+ createdAt: 2026-04-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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: c38e2a74cde575841892433f72ffae79
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: 0408bcbf6d5dfa3ba68d59ffbdf5bace
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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ createdBy:
+ id: admin
+ type: user
+ id: campaign_spend
+ title: Campaign Spend
+ - content:
+ format: $#,##0
+ maql: SELECT SUM({fact/price}*{fact/quantity})
+ createdAt: 2026-04-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ createdBy:
+ id: admin
+ type: user
+ id: campaign_spend
+ title: Campaign Spend
+ - content:
+ format: $#,##0
+ maql: SELECT SUM({fact/price}*{fact/quantity})
+ createdAt: 2026-04-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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-02 13:24
+ 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: 059f87e982390ef3da80a6d400e5bcae
+ 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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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..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
@@ -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: f17b1207b9038c2fdcd471da3d8ff3c8
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..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
@@ -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: cebe50069697973dc411ba2b8cd9c3e8
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..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
@@ -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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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-02 13:23
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..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
@@ -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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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: 1a8860e011961af2e7735c0845c5e45b
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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-02 13:24
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: 7015e386eae4d9845aacf25581f942c3
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: bb83673b8a4d6bca92da47f7192fe923
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..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
@@ -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: 974ff7b61da2e362badb8b3661397f5e
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: eac27b50a9858f27a32820de4ac07805
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 8522828ac..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,20 +56,24 @@ 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
@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 +85,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/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml
index a00eb36e4..629492e45 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: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c
+ 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: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c
+ 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: 3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf
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/3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf
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/3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf
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..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
@@ -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-02 13:26
+ 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-02 13:26
+ 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-02 13:26
+ 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: e6a127b81b378d116ac248b33dd8d9d42033e593
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/e6a127b81b378d116ac248b33dd8d9d42033e593
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,14 @@ interactions:
- 'true'
X-Requested-With:
- XMLHttpRequest
+ method: GET
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593
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/458b7e1f0c68b09df15586401c72bea1e92e2e26
body: null
headers:
Accept:
@@ -356,15 +348,58 @@ interactions:
- 'true'
X-Requested-With:
- XMLHttpRequest
+ method: GET
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593
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/e6a127b81b378d116ac248b33dd8d9d42033e593
+ 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 +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/458b7e1f0c68b09df15586401c72bea1e92e2e26
body: null
headers:
Accept:
@@ -401,15 +436,17 @@ interactions:
- 'true'
X-Requested-With:
- XMLHttpRequest
+ method: GET
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593
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 +461,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..ab652e768 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: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c
+ 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: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c
+ 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: f0a7709174cdc2944c8d6bab6910d6677117b24f
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/f0a7709174cdc2944c8d6bab6910d6677117b24f
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/f0a7709174cdc2944c8d6bab6910d6677117b24f
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?\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
- 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..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
@@ -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-02 13:26
+ 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-02 13:26
+ 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-02 13:26
+ 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: 5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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/5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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/5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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/5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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/5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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,283 @@ interactions:
- 'true'
X-Requested-With:
- XMLHttpRequest
+ method: GET
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea
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\
+ M\0\uFFFD%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFD\
+ j\uFFFD0\x10E\uFFFD\uFFFD\n\uFFFD\uFFFD-\uFFFD)!\b\u06C1\uFFFDd\uFFFD@\uFFFD\
+ .-\uFFFD\ti\uFFFD\uFFFDZ\x0F$\uFFFDN\uFFFD\uFFFD\uFFFD#N\x02^e9\uFFFDw\uFFFD\
+ \uFFFD\x19T\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD:\uFFFDU\uFFFD\uFFFD$E\x11\
+ (\uFFFD\uFFFDP\uFFFD\x12}\u051Bx\uFFFD\"\uFFFD\uFFFD\uFFFD\nJt\x02\uFFFD\
+ \uFFFD\uFFFDC\uFFFD\fa\uFFFD\x9B\uFFFD\x06\uFFFD\x17\uFFFD\0R\uFFFD0S\uFFFD\
+ \uFFFD\uFFFD\uFFFD`\uFFFD\uFFFD\x01$uIp\uFFFD \uED15\u0507\uFFFD\uEC61\uFFFD\
+ \uFFFD\x01\uFFFDi\uFFFD\uFFFD\x12<\uFFFD\uFFFDS\uFFFD\x01c3\x11\u0448\uFFFD\
+ lB\uFFFD_\uFFFD\uFFFD\0\uFFFD04 Ay\uFFFD\uFFFD$\uFFFD\x17\uFFFD\a+\uFFFD\
+ lC\uFFFD\\9\uFFFD\uFFFD'\x03\uFFFD\u05B38\uFFFD\uFFFDNL\u01B6m\uFFFDv\uFFFD\
+ [C\uFFFD\f\x7Fm_\uFFFD\uFFFDUc\uFFFD\uFFFDS1@U\uFFFD\x19a\x16\uFFFD\u05F6\
+ *\uFFFDu\x11\x0E\uFFFDP\uFFFD\uFFFD\uFFFD;\x01\uFFFD\uFFFD\x14\uFFFD\uFFFD\
+ \uFFFDq\uFFFD\uFFFD\x0Fx\x14\x02\uFFFD!\uFFFDY\uFFFD\\<\uFFFD\uFFFD\eT\uFFFD\
+ i\uFFFD\uFFFD\uFFFD\uFFFD8\uFFFD\uFFFDlA\uFFFD%\uFFFDW\uFFFD\uFFFD\u021B\
+ \uFFFD\vP\uFFFDC\uFFFD&\uFFFD\x01C\uFFFD\uFFFDOP\uFFFD\x03PK\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\uFFFD\
+ R\uFFFDN\uFFFD0\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\uFFFD\
+ xW\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\x1D\
+ h\uFFFD1C\uFFFD?Mm\uFFFD\uFFFD7\uFFFD\uFFFD\uFFFD)X\uFFFD\uFFFDQ\uFFFD\uFFFD\
+ Qv,\x06l\x03R\uFFFD\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=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 a3c3b8974..6bfee86ea 100644
--- a/packages/tests-support/src/tests_support/vcrpy_utils.py
+++ b/packages/tests-support/src/tests_support/vcrpy_utils.py
@@ -1,12 +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
@@ -16,6 +16,136 @@
HEADERS_STR = "headers"
PLACEHOLDER = ["PLACEHOLDER"]
+# 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",
+ "client_secret",
+ "private_key_passphrase",
+}
+
+# Canonical (local) values — cassettes always use these.
+_CANONICAL_HOST = "http://localhost:3000"
+_CANONICAL_HOSTNAME = "localhost"
+_CANONICAL_ORG_ID = "default"
+_CANONICAL_ORG_NAME = "Default Organization"
+
+# Module-level normalization state.
+# Populated by configure_normalization() before tests run.
+# 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:
+ """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, _normalization_configured
+ 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
+ _normalization_configured = True
+
+
+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 = orjson.loads(body)
+ except (orjson.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 orjson.dumps(_strip(data), option=orjson.OPT_SORT_KEYS).decode("utf-8")
+
+
+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 +156,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"
@@ -48,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)
+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):
+ 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)
+
+ # 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
@@ -91,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
@@ -101,8 +268,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
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)
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.",
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" },
]