diff --git a/docs/static/resources/openapi.json b/docs/static/resources/openapi.json index 4b2b50caf07..f5a44193ea3 100644 --- a/docs/static/resources/openapi.json +++ b/docs/static/resources/openapi.json @@ -100,8 +100,13 @@ "QUERY_SECURITY_ACCESS_ERROR", "MISSING_OWNERSHIP_ERROR", "USER_ACTIVITY_SECURITY_ACCESS_ERROR", + "DASHBOARD_SECURITY_ACCESS_ERROR", + "CHART_SECURITY_ACCESS_ERROR", + "OAUTH2_REDIRECT", + "OAUTH2_REDIRECT_ERROR", "BACKEND_TIMEOUT_ERROR", "DATABASE_NOT_FOUND_ERROR", + "TABLE_NOT_FOUND_ERROR", "MISSING_TEMPLATE_PARAMS_ERROR", "INVALID_TEMPLATE_PARAMS_ERROR", "RESULTS_BACKEND_NOT_CONFIGURED_ERROR", @@ -112,10 +117,13 @@ "RESULTS_BACKEND_ERROR", "ASYNC_WORKERS_ERROR", "ADHOC_SUBQUERY_NOT_ALLOWED_ERROR", + "INVALID_SQL_ERROR", + "RESULT_TOO_LARGE_ERROR", "GENERIC_COMMAND_ERROR", "GENERIC_BACKEND_ERROR", "INVALID_PAYLOAD_FORMAT_ERROR", "INVALID_PAYLOAD_SCHEMA_ERROR", + "MARSHMALLOW_ERROR", "REPORT_NOTIFICATION_ERROR" ], "type": "string" @@ -458,13 +466,13 @@ "AnnotationRestApi.get_list": { "properties": { "changed_by": { - "$ref": "#/components/schemas/AnnotationRestApi.get_list.User1" + "$ref": "#/components/schemas/AnnotationRestApi.get_list.User" }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/AnnotationRestApi.get_list.User" + "$ref": "#/components/schemas/AnnotationRestApi.get_list.User1" }, "end_dttm": { "format": "date-time", @@ -580,6 +588,29 @@ }, "type": "object" }, + "AppleHealthResponseSchema": { + "properties": { + "cache_message": { + "description": "Human readable status message for the cache connection", + "type": "string" + }, + "cache_status": { + "description": "The status of the cache", + "enum": ["NA", "HEALTHY", "ERROR"], + "type": "string" + }, + "metastore_message": { + "description": "Human readable status message for the metastore connection", + "type": "string" + }, + "metastore_status": { + "description": "The status of the metastore", + "enum": ["NA", "HEALTHY", "ERROR"], + "type": "string" + } + }, + "type": "object" + }, "AvailableDomainsSchema": { "properties": { "domains": { @@ -591,10 +622,127 @@ }, "type": "object" }, + "CSVMetadataUploadFilePostSchema": { + "properties": { + "delimiter": { + "description": "The delimiter of the CSV file", + "type": "string" + }, + "file": { + "description": "The file to upload", + "format": "binary", + "type": "string" + }, + "header_row": { + "description": "Row containing the headers to use as column names(0 is first line of data). Leave empty if there is no header row.", + "type": "integer" + } + }, + "required": ["file"], + "type": "object" + }, + "CSVUploadPostSchema": { + "properties": { + "already_exists": { + "default": "fail", + "description": "What to do if the table already exists accepts: fail, replace, append", + "enum": ["fail", "replace", "append"], + "type": "string" + }, + "column_data_types": { + "description": "A dictionary with column names and their data types if you need to change the defaults. Example: {'user_id':'int'}. Check Python Pandas library for supported data types", + "type": "string" + }, + "column_dates": { + "description": "A list of column names that should be parsed as dates. Example: date,timestamp", + "items": { + "type": "string" + }, + "type": "array" + }, + "columns_read": { + "description": "A List of the column names that should be read", + "items": { + "type": "string" + }, + "type": "array" + }, + "dataframe_index": { + "description": "Write dataframe index as a column.", + "type": "boolean" + }, + "day_first": { + "description": "DD/MM format dates, international and European format", + "type": "boolean" + }, + "decimal_character": { + "description": "Character to recognize as decimal point. Default is '.'", + "type": "string" + }, + "delimiter": { + "description": "The delimiter of the CSV file", + "type": "string" + }, + "file": { + "description": "The CSV file to upload", + "format": "text/csv", + "type": "string" + }, + "header_row": { + "description": "Row containing the headers to use as column names(0 is first line of data). Leave empty if there is no header row.", + "type": "integer" + }, + "index_column": { + "description": "Column to use as the row labels of the dataframe. Leave empty if no index column", + "type": "string" + }, + "index_label": { + "description": "Index label for index column.", + "type": "string" + }, + "null_values": { + "description": "A list of strings that should be treated as null. Examples: '' for empty strings, 'None', 'N/A',Warning: Hive database supports only a single value", + "items": { + "type": "string" + }, + "type": "array" + }, + "rows_to_read": { + "description": "Number of rows to read from the file. If None, reads all rows.", + "minimum": 1, + "nullable": true, + "type": "integer" + }, + "schema": { + "description": "The schema to upload the data file to.", + "type": "string" + }, + "skip_blank_lines": { + "description": "Skip blank lines in the CSV file.", + "type": "boolean" + }, + "skip_initial_space": { + "description": "Skip spaces after delimiter.", + "type": "boolean" + }, + "skip_rows": { + "description": "Number of rows to skip at start of file.", + "type": "integer" + }, + "table_name": { + "description": "The name of the table to be created/appended", + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": ["file", "table_name"], + "type": "object" + }, "CacheInvalidationRequestSchema": { "properties": { "datasource_uids": { - "description": "The uid of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_uid` ", + "description": "The uid of the dataset/datasource this new chart will use. A complete datasource identification needs `datasource_uid` ", "items": { "type": "string" }, @@ -642,6 +790,18 @@ }, "type": "object" }, + "CatalogsResponseSchema": { + "properties": { + "result": { + "items": { + "description": "A database catalog name", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "ChartCacheScreenshotResponseSchema": { "properties": { "cache_key": { @@ -864,14 +1024,7 @@ }, "type": { "description": "Datasource type", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" } }, @@ -884,6 +1037,11 @@ "description": "HAVING clause to be added to aggregate queries using AND operator.", "type": "string" }, + "instant_time_comparison_range": { + "description": "This is only set using the new time comparison controls that is made available in some plugins behind the experimental feature flag.", + "nullable": true, + "type": "string" + }, "relative_end": { "description": "End time for relative time deltas. Default: `config[\"DEFAULT_RELATIVE_START_TIME\"]`", "enum": ["today", "now"], @@ -915,12 +1073,7 @@ "1969-12-28T00:00:00Z/P1W", "1969-12-29T00:00:00Z/P1W", "P1W/1970-01-03T00:00:00Z", - "P1W/1970-01-04T00:00:00Z", - "PT2H", - "PT4H", - "PT8H", - "PT10H", - "PT12H" + "P1W/1970-01-04T00:00:00Z" ], "example": "P1D", "nullable": true, @@ -958,6 +1111,7 @@ ">=", "<=", "LIKE", + "NOT LIKE", "ILIKE", "IS NULL", "IS NOT NULL", @@ -1098,8 +1252,10 @@ "geodetic_parse", "geohash_decode", "geohash_encode", + "histogram", "pivot", "prophet", + "rank", "rename", "resample", "rolling", @@ -1173,12 +1329,7 @@ "1969-12-28T00:00:00Z/P1W", "1969-12-29T00:00:00Z/P1W", "P1W/1970-01-03T00:00:00Z", - "P1W/1970-01-04T00:00:00Z", - "PT2H", - "PT4H", - "PT8H", - "PT10H", - "PT12H" + "P1W/1970-01-04T00:00:00Z" ], "example": "P1D", "type": "string" @@ -1603,7 +1754,7 @@ "type": "boolean" }, "owners": { - "$ref": "#/components/schemas/ChartDataRestApi.get.User" + "$ref": "#/components/schemas/ChartDataRestApi.get.AppleUser" }, "params": { "nullable": true, @@ -1635,6 +1786,23 @@ }, "type": "object" }, + "ChartDataRestApi.get.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ChartDataRestApi.get.Dashboard": { "properties": { "dashboard_title": { @@ -1668,23 +1836,6 @@ }, "type": "object" }, - "ChartDataRestApi.get.User": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "ChartDataRestApi.get_list": { "properties": { "cache_timeout": { @@ -1700,7 +1851,7 @@ "type": "string" }, "changed_by": { - "$ref": "#/components/schemas/ChartDataRestApi.get_list.User3" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User" }, "changed_by_name": { "readOnly": true @@ -1715,7 +1866,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/ChartDataRestApi.get_list.User" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User1" }, "created_by_name": { "readOnly": true @@ -1766,10 +1917,10 @@ "type": "string" }, "last_saved_by": { - "$ref": "#/components/schemas/ChartDataRestApi.get_list.User2" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.AppleUser" }, "owners": { - "$ref": "#/components/schemas/ChartDataRestApi.get_list.User1" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.AppleUser1" }, "params": { "nullable": true, @@ -1803,6 +1954,40 @@ }, "type": "object" }, + "ChartDataRestApi.get_list.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, + "ChartDataRestApi.get_list.AppleUser1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ChartDataRestApi.get_list.Dashboard": { "properties": { "dashboard_title": { @@ -1880,37 +2065,6 @@ "required": ["first_name", "last_name"], "type": "object" }, - "ChartDataRestApi.get_list.User2": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "ChartDataRestApi.get_list.User3": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "ChartDataRestApi.post": { "properties": { "cache_timeout": { @@ -1946,14 +2100,7 @@ }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" }, "description": { @@ -1987,7 +2134,7 @@ "type": "string" }, "query_context_generation": { - "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modifiedstate.", "nullable": true, "type": "boolean" }, @@ -2039,14 +2186,7 @@ }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "nullable": true, "type": "string" }, @@ -2081,7 +2221,7 @@ "type": "string" }, "query_context_generation": { - "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modifiedstate.", "nullable": true, "type": "boolean" }, @@ -2094,7 +2234,8 @@ }, "tags": { "items": { - "$ref": "#/components/schemas/Tag" + "description": "Tags to be associated with the chart", + "type": "integer" }, "type": "array" }, @@ -2371,7 +2512,7 @@ "type": "boolean" }, "owners": { - "$ref": "#/components/schemas/ChartRestApi.get.User" + "$ref": "#/components/schemas/ChartRestApi.get.AppleUser" }, "params": { "nullable": true, @@ -2403,6 +2544,23 @@ }, "type": "object" }, + "ChartRestApi.get.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ChartRestApi.get.Dashboard": { "properties": { "dashboard_title": { @@ -2436,23 +2594,6 @@ }, "type": "object" }, - "ChartRestApi.get.User": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "ChartRestApi.get_list": { "properties": { "cache_timeout": { @@ -2468,7 +2609,7 @@ "type": "string" }, "changed_by": { - "$ref": "#/components/schemas/ChartRestApi.get_list.User3" + "$ref": "#/components/schemas/ChartRestApi.get_list.User" }, "changed_by_name": { "readOnly": true @@ -2483,7 +2624,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/ChartRestApi.get_list.User" + "$ref": "#/components/schemas/ChartRestApi.get_list.User1" }, "created_by_name": { "readOnly": true @@ -2534,10 +2675,10 @@ "type": "string" }, "last_saved_by": { - "$ref": "#/components/schemas/ChartRestApi.get_list.User2" + "$ref": "#/components/schemas/ChartRestApi.get_list.AppleUser" }, "owners": { - "$ref": "#/components/schemas/ChartRestApi.get_list.User1" + "$ref": "#/components/schemas/ChartRestApi.get_list.AppleUser1" }, "params": { "nullable": true, @@ -2571,6 +2712,40 @@ }, "type": "object" }, + "ChartRestApi.get_list.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, + "ChartRestApi.get_list.AppleUser1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ChartRestApi.get_list.Dashboard": { "properties": { "dashboard_title": { @@ -2648,37 +2823,6 @@ "required": ["first_name", "last_name"], "type": "object" }, - "ChartRestApi.get_list.User2": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "ChartRestApi.get_list.User3": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "ChartRestApi.post": { "properties": { "cache_timeout": { @@ -2714,14 +2858,7 @@ }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" }, "description": { @@ -2755,7 +2892,7 @@ "type": "string" }, "query_context_generation": { - "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modifiedstate.", "nullable": true, "type": "boolean" }, @@ -2807,14 +2944,7 @@ }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "nullable": true, "type": "string" }, @@ -2849,7 +2979,7 @@ "type": "string" }, "query_context_generation": { - "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modifiedstate.", "nullable": true, "type": "boolean" }, @@ -2862,7 +2992,8 @@ }, "tags": { "items": { - "$ref": "#/components/schemas/Tag" + "description": "Tags to be associated with the chart", + "type": "integer" }, "type": "array" }, @@ -2877,11 +3008,70 @@ }, "type": "object" }, + "ColumnarMetadataUploadFilePostSchema": { + "properties": { + "file": { + "description": "The file to upload", + "format": "binary", + "type": "string" + } + }, + "required": ["file"], + "type": "object" + }, + "ColumnarUploadPostSchema": { + "properties": { + "already_exists": { + "default": "fail", + "description": "What to do if the table already exists accepts: fail, replace, append", + "enum": ["fail", "replace", "append"], + "type": "string" + }, + "columns_read": { + "description": "A List of the column names that should be read", + "items": { + "type": "string" + }, + "type": "array" + }, + "dataframe_index": { + "description": "Write dataframe index as a column.", + "type": "boolean" + }, + "file": { + "description": "The Columnar file to upload", + "format": "binary", + "type": "string" + }, + "index_label": { + "description": "Index label for index column.", + "type": "string" + }, + "schema": { + "description": "The schema to upload the data file to.", + "type": "string" + }, + "table_name": { + "description": "The name of the table to be created/appended", + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": ["file", "table_name"], + "type": "object" + }, "CssTemplateRestApi.get": { "properties": { - "created_by": { + "changed_by": { "$ref": "#/components/schemas/CssTemplateRestApi.get.User" }, + "changed_on_delta_humanized": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/CssTemplateRestApi.get.User1" + }, "css": { "nullable": true, "type": "string" @@ -2914,16 +3104,33 @@ "required": ["first_name", "last_name"], "type": "object" }, + "CssTemplateRestApi.get.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "CssTemplateRestApi.get_list": { "properties": { "changed_by": { - "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User1" + "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User" }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User" + "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User1" }, "created_on": { "format": "date-time", @@ -3007,6 +3214,23 @@ }, "type": "object" }, + "DashboardCacheScreenshotResponseSchema": { + "properties": { + "cache_key": { + "description": "The cache key", + "type": "string" + }, + "dashboard_url": { + "description": "The url to render the dashboard", + "type": "string" + }, + "image_url": { + "description": "The url to fetch the screenshot", + "type": "string" + } + }, + "type": "object" + }, "DashboardCopySchema": { "properties": { "css": { @@ -3034,12 +3258,21 @@ }, "DashboardDatasetSchema": { "properties": { + "always_filter_main_dttm": { + "type": "boolean" + }, "cache_timeout": { "type": "integer" }, "column_formats": { "type": "object" }, + "column_names": { + "items": { + "type": "string" + }, + "type": "array" + }, "column_types": { "items": { "type": "integer" @@ -3052,12 +3285,6 @@ }, "type": "array" }, - "column_names": { - "items": { - "type": "string" - }, - "type": "array" - }, "currency_formats": { "type": "object" }, @@ -3112,6 +3339,9 @@ "name": { "type": "string" }, + "normalize_columns": { + "type": "boolean" + }, "offset": { "type": "integer" }, @@ -3205,6 +3435,12 @@ }, "type": "array" }, + "created_by": { + "$ref": "#/components/schemas/User" + }, + "created_on_delta_humanized": { + "type": "string" + }, "css": { "description": "Override CSS for the dashboard.", "type": "string" @@ -3248,7 +3484,7 @@ }, "tags": { "items": { - "$ref": "#/components/schemas/Tag1" + "$ref": "#/components/schemas/Tag" }, "type": "array" }, @@ -3312,7 +3548,7 @@ "type": "string" }, "changed_by": { - "$ref": "#/components/schemas/DashboardRestApi.get_list.User2" + "$ref": "#/components/schemas/DashboardRestApi.get_list.User" }, "changed_by_name": { "readOnly": true @@ -3324,7 +3560,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/DashboardRestApi.get_list.User" + "$ref": "#/components/schemas/DashboardRestApi.get_list.User1" }, "created_on_delta_humanized": { "readOnly": true @@ -3349,7 +3585,7 @@ "type": "string" }, "owners": { - "$ref": "#/components/schemas/DashboardRestApi.get_list.User1" + "$ref": "#/components/schemas/DashboardRestApi.get_list.AppleUser" }, "position_json": { "nullable": true, @@ -3382,6 +3618,23 @@ }, "type": "object" }, + "DashboardRestApi.get_list.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "DashboardRestApi.get_list.Role": { "properties": { "id": { @@ -3445,23 +3698,6 @@ "required": ["first_name", "last_name"], "type": "object" }, - "DashboardRestApi.get_list.User2": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "DashboardRestApi.post": { "properties": { "certification_details": { @@ -3598,12 +3834,23 @@ "minLength": 0, "nullable": true, "type": "string" + }, + "tags": { + "items": { + "description": "Tags to be associated with the dashboard", + "nullable": true, + "type": "integer" + }, + "type": "array" } }, "type": "object" }, "Database": { "properties": { + "allow_multi_catalog": { + "type": "boolean" + }, "allows_cost_estimate": { "type": "boolean" }, @@ -3691,15 +3938,14 @@ "type": "string" }, "engine_information": { - "additionalProperties": {}, - "type": "object" + "$ref": "#/components/schemas/EngineInformation" }, "expose_in_sqllab": { "description": "Expose this database to SQLLab", "type": "boolean" }, "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.7. The disable_drill_to_detail field is a boolean specifying whether or notdrill to detail is disabled for the database.8. The allow_multi_catalog indicates if the database allows changing the default catalog when running queries and creating datasets.

", "type": "string" }, "force_ctas_schema": { @@ -3936,6 +4182,9 @@ "nullable": true, "type": "boolean" }, + "allow_multi_catalog": { + "readOnly": true + }, "allow_run_async": { "nullable": true, "type": "boolean" @@ -3952,6 +4201,9 @@ "backend": { "readOnly": true }, + "changed_by": { + "$ref": "#/components/schemas/DatabaseRestApi.get_list.User" + }, "changed_on": { "format": "date-time", "nullable": true, @@ -3961,7 +4213,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/DatabaseRestApi.get_list.User" + "$ref": "#/components/schemas/DatabaseRestApi.get_list.User1" }, "database_name": { "maxLength": 250, @@ -3970,6 +4222,9 @@ "disable_data_preview": { "readOnly": true }, + "disable_drill_to_detail": { + "readOnly": true + }, "engine_information": { "readOnly": true }, @@ -4015,6 +4270,20 @@ "required": ["first_name", "last_name"], "type": "object" }, + "DatabaseRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "DatabaseRestApi.post": { "properties": { "allow_ctas": { @@ -4072,7 +4341,7 @@ "type": "string" }, "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.7. The disable_drill_to_detail field is a boolean specifying whether or notdrill to detail is disabled for the database.8. The allow_multi_catalog indicates if the database allows changing the default catalog when running queries and creating datasets.

", "type": "string" }, "force_ctas_schema": { @@ -4184,7 +4453,7 @@ "type": "string" }, "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.7. The disable_drill_to_detail field is a boolean specifying whether or notdrill to detail is disabled for the database.8. The allow_multi_catalog indicates if the database allows changing the default catalog when running queries and creating datasets.

", "type": "string" }, "force_ctas_schema": { @@ -4319,7 +4588,7 @@ "type": "string" }, "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.7. The disable_drill_to_detail field is a boolean specifying whether or notdrill to detail is disabled for the database.8. The allow_multi_catalog indicates if the database allows changing the default catalog when running queries and creating datasets.

", "type": "string" }, "impersonate_user": { @@ -4388,7 +4657,7 @@ "type": "string" }, "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.7. The disable_drill_to_detail field is a boolean specifying whether or notdrill to detail is disabled for the database.8. The allow_multi_catalog indicates if the database allows changing the default catalog when running queries and creating datasets.

", "type": "string" }, "id": { @@ -4915,12 +5184,21 @@ }, "DatasetRestApi.get": { "properties": { + "always_filter_main_dttm": { + "nullable": true, + "type": "boolean" + }, "cache_timeout": { "nullable": true, "type": "integer" }, + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, "changed_by": { - "$ref": "#/components/schemas/DatasetRestApi.get.User2" + "$ref": "#/components/schemas/DatasetRestApi.get.User1" }, "changed_on": { "format": "date-time", @@ -5006,6 +5284,10 @@ "name": { "readOnly": true }, + "normalize_columns": { + "nullable": true, + "type": "boolean" + }, "offset": { "nullable": true, "type": "integer" @@ -5014,7 +5296,7 @@ "readOnly": true }, "owners": { - "$ref": "#/components/schemas/DatasetRestApi.get.User1" + "$ref": "#/components/schemas/DatasetRestApi.get.AppleUser" }, "schema": { "maxLength": 255, @@ -5052,8 +5334,28 @@ "required": ["columns", "database", "metrics", "table_name"], "type": "object" }, + "DatasetRestApi.get.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "DatasetRestApi.get.Database": { "properties": { + "allow_multi_catalog": { + "readOnly": true + }, "backend": { "readOnly": true }, @@ -5219,23 +5521,6 @@ "type": "object" }, "DatasetRestApi.get.User1": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "DatasetRestApi.get.User2": { "properties": { "first_name": { "maxLength": 64, @@ -5251,8 +5536,13 @@ }, "DatasetRestApi.get_list": { "properties": { + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, "changed_by": { - "$ref": "#/components/schemas/DatasetRestApi.get_list.User1" + "$ref": "#/components/schemas/DatasetRestApi.get_list.User" }, "changed_by_name": { "readOnly": true @@ -5291,7 +5581,7 @@ "readOnly": true }, "owners": { - "$ref": "#/components/schemas/DatasetRestApi.get_list.User" + "$ref": "#/components/schemas/DatasetRestApi.get_list.AppleUser" }, "schema": { "maxLength": 255, @@ -5310,6 +5600,23 @@ "required": ["database", "table_name"], "type": "object" }, + "DatasetRestApi.get_list.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "DatasetRestApi.get_list.Database": { "properties": { "database_name": { @@ -5340,22 +5647,18 @@ "required": ["first_name", "last_name"], "type": "object" }, - "DatasetRestApi.get_list.User1": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "DatasetRestApi.post": { "properties": { + "always_filter_main_dttm": { + "default": false, + "type": "boolean" + }, + "catalog": { + "maxLength": 250, + "minLength": 0, + "nullable": true, + "type": "string" + }, "database": { "type": "integer" }, @@ -5367,6 +5670,10 @@ "nullable": true, "type": "boolean" }, + "normalize_columns": { + "default": false, + "type": "boolean" + }, "owners": { "items": { "type": "integer" @@ -5394,10 +5701,20 @@ }, "DatasetRestApi.put": { "properties": { + "always_filter_main_dttm": { + "default": false, + "type": "boolean" + }, "cache_timeout": { "nullable": true, "type": "integer" }, + "catalog": { + "maxLength": 250, + "minLength": 0, + "nullable": true, + "type": "string" + }, "columns": { "items": { "$ref": "#/components/schemas/DatasetColumnsPut" @@ -5451,6 +5768,10 @@ }, "type": "array" }, + "normalize_columns": { + "nullable": true, + "type": "boolean" + }, "offset": { "nullable": true, "type": "integer" @@ -5486,6 +5807,11 @@ }, "Datasource": { "properties": { + "catalog": { + "description": "Datasource catalog", + "nullable": true, + "type": "string" + }, "database_name": { "description": "Datasource name", "type": "string" @@ -5496,14 +5822,7 @@ }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" }, "schema": { @@ -5610,8 +5929,34 @@ }, "type": "object" }, + "EngineInformation": { + "properties": { + "disable_ssh_tunneling": { + "description": "SSH tunnel is not available to the database", + "type": "boolean" + }, + "supports_dynamic_catalog": { + "description": "The database supports multiple catalogs in a single connection", + "type": "boolean" + }, + "supports_file_upload": { + "description": "Users can upload files to the database", + "type": "boolean" + }, + "supports_oauth2": { + "description": "The database supports OAuth2", + "type": "boolean" + } + }, + "type": "object" + }, "EstimateQueryCostSchema": { "properties": { + "catalog": { + "description": "The database catalog", + "nullable": true, + "type": "string" + }, "database_id": { "description": "The database id", "type": "integer" @@ -5633,8 +5978,109 @@ "required": ["database_id", "sql"], "type": "object" }, + "ExcelMetadataUploadFilePostSchema": { + "properties": { + "file": { + "description": "The file to upload", + "format": "binary", + "type": "string" + }, + "header_row": { + "description": "Row containing the headers to use as column names(0 is first line of data). Leave empty if there is no header row.", + "type": "integer" + } + }, + "required": ["file"], + "type": "object" + }, + "ExcelUploadPostSchema": { + "properties": { + "already_exists": { + "default": "fail", + "description": "What to do if the table already exists accepts: fail, replace, append", + "enum": ["fail", "replace", "append"], + "type": "string" + }, + "column_dates": { + "description": "A list of column names that should be parsed as dates. Example: date,timestamp", + "items": { + "type": "string" + }, + "type": "array" + }, + "columns_read": { + "description": "A List of the column names that should be read", + "items": { + "type": "string" + }, + "type": "array" + }, + "dataframe_index": { + "description": "Write dataframe index as a column.", + "type": "boolean" + }, + "decimal_character": { + "description": "Character to recognize as decimal point. Default is '.'", + "type": "string" + }, + "file": { + "description": "The Excel file to upload", + "format": "binary", + "type": "string" + }, + "header_row": { + "description": "Row containing the headers to use as column names(0 is first line of data). Leave empty if there is no header row.", + "type": "integer" + }, + "index_column": { + "description": "Column to use as the row labels of the dataframe. Leave empty if no index column", + "type": "string" + }, + "index_label": { + "description": "Index label for index column.", + "type": "string" + }, + "null_values": { + "description": "A list of strings that should be treated as null. Examples: '' for empty strings, 'None', 'N/A',Warning: Hive database supports only a single value", + "items": { + "type": "string" + }, + "type": "array" + }, + "rows_to_read": { + "description": "Number of rows to read from the file. If None, reads all rows.", + "minimum": 1, + "nullable": true, + "type": "integer" + }, + "schema": { + "description": "The schema to upload the data file to.", + "type": "string" + }, + "sheet_name": { + "description": "Strings used for sheet names (default is the first sheet).", + "type": "string" + }, + "skip_rows": { + "description": "Number of rows to skip at start of file.", + "type": "integer" + }, + "table_name": { + "description": "The name of the table to be created/appended", + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": ["file", "table_name"], + "type": "object" + }, "ExecutePayloadSchema": { "properties": { + "catalog": { + "nullable": true, + "type": "string" + }, "client_id": { "nullable": true, "type": "string" @@ -5743,14 +6189,7 @@ }, "datasource_type": { "description": "The datasource type", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" }, "form_data": { @@ -5773,14 +6212,7 @@ }, "datasource_type": { "description": "The datasource type", - "enum": [ - "sl_table", - "table", - "dataset", - "query", - "saved_query", - "view" - ], + "enum": ["table", "dataset", "query", "saved_query", "view"], "type": "string" }, "form_data": { @@ -5805,10 +6237,25 @@ }, "GetOrCreateDatasetSchema": { "properties": { + "always_filter_main_dttm": { + "default": false, + "type": "boolean" + }, + "catalog": { + "description": "The catalog the table belongs to", + "maxLength": 250, + "minLength": 0, + "nullable": true, + "type": "string" + }, "database_id": { "description": "ID of database table belongs to", "type": "integer" }, + "normalize_columns": { + "default": false, + "type": "boolean" + }, "schema": { "description": "The schema the table belongs to", "maxLength": 250, @@ -5849,6 +6296,524 @@ "required": ["resources", "rls"], "type": "object" }, + "IASLoginTokenRequestSchema": { + "properties": { + "access_token": { + "description": "IAS Access token. Can be requested by adding `token` to the `responseTypes`.", + "nullable": true, + "type": "string" + }, + "client_id": { + "description": "IAS client id. Only needed if `refresh_token` is provided.", + "nullable": true, + "type": "string" + }, + "client_secret": { + "description": "IAS client secret. Only needed if `refresh_token` and `client_id` is provided.", + "nullable": true, + "type": "string" + }, + "id_token": { + "description": "IAS ID token. Can be requested by adding `id_token` to the `responseTypes`. The following scopes should be added:`iam:ds:groups`, `corpds:ds:username`, `corpds:ds:firstName`, `corpds:ds:lastName`, `corpds:ds:email`, `corpds:ds:uidNumber`, `iam:ds:explicitgroups`.", + "type": "string" + }, + "refresh_token": { + "description": "IAS refresh token. This can be requested by adding `offline` to `scopes`. To be able to refresh the token, the IAS `client_id` and `client_secret` need to be added, as the same client needs to be used for refreshing as logging in.", + "nullable": true, + "type": "string" + } + }, + "required": ["id_token"], + "type": "object" + }, + "IASLoginTokenResponseSchema": { + "properties": { + "access_token": { + "description": "Access that can be used access the Superset API", + "type": "string" + }, + "refresh_token": { + "description": "Refresh token that can be used to refresh the `access_token`", + "type": "string" + } + }, + "required": ["access_token"], + "type": "object" + }, + "IASProfileResponse": { + "properties": { + "client_id": { + "description": "The client id", + "type": "string" + }, + "profile": { + "description": "The IAS profile", + "type": "string" + }, + "scope": { + "description": "The scope of the client", + "type": "string" + } + }, + "required": ["client_id", "profile"], + "type": "object" + }, + "IASProfilesResponseSchema": { + "properties": { + "result": { + "description": "A list of all available IAS profiles", + "items": { + "$ref": "#/components/schemas/IASProfileResponse" + }, + "type": "array" + } + }, + "type": "object" + }, + "IASTokenResponse": { + "properties": { + "access_token": { + "description": "The access token", + "type": "string" + }, + "has_client_credentials": { + "description": "Are the original client credentials available or not", + "type": "boolean" + }, + "has_refresh_token": { + "description": "Is there a refresh token available or not", + "type": "boolean" + }, + "ias_profile": { + "description": "The IAS profile", + "type": "string" + }, + "id_token": { + "description": "The id token", + "type": "string" + } + }, + "required": [ + "has_client_credentials", + "has_refresh_token", + "ias_profile", + "id_token" + ], + "type": "object" + }, + "IASTokensResponseSchema": { + "properties": { + "result": { + "description": "A list of all requested tokens", + "items": { + "$ref": "#/components/schemas/IASTokenResponse" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImportV1Database": { + "properties": { + "allow_csv_upload": { + "type": "boolean" + }, + "allow_ctas": { + "type": "boolean" + }, + "allow_cvas": { + "type": "boolean" + }, + "allow_dml": { + "type": "boolean" + }, + "allow_run_async": { + "type": "boolean" + }, + "cache_timeout": { + "nullable": true, + "type": "integer" + }, + "database_name": { + "type": "string" + }, + "expose_in_sqllab": { + "type": "boolean" + }, + "external_url": { + "nullable": true, + "type": "string" + }, + "extra": { + "$ref": "#/components/schemas/ImportV1DatabaseExtra" + }, + "impersonate_user": { + "type": "boolean" + }, + "is_managed_externally": { + "nullable": true, + "type": "boolean" + }, + "password": { + "nullable": true, + "type": "string" + }, + "sqlalchemy_uri": { + "type": "string" + }, + "ssh_tunnel": { + "allOf": [ + { + "$ref": "#/components/schemas/DatabaseSSHTunnel" + } + ], + "nullable": true + }, + "uuid": { + "format": "uuid", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": ["database_name", "sqlalchemy_uri", "uuid", "version"], + "type": "object" + }, + "ImportV1DatabaseExtra": { + "properties": { + "allow_multi_catalog": { + "type": "boolean" + }, + "allows_virtual_table_explore": { + "type": "boolean" + }, + "cancel_query_on_windows_unload": { + "type": "boolean" + }, + "cost_estimate_enabled": { + "type": "boolean" + }, + "disable_data_preview": { + "type": "boolean" + }, + "disable_drill_to_detail": { + "type": "boolean" + }, + "engine_params": { + "additionalProperties": {}, + "type": "object" + }, + "metadata_cache_timeout": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "metadata_params": { + "additionalProperties": {}, + "type": "object" + }, + "schemas_allowed_for_csv_upload": { + "items": { + "type": "string" + }, + "type": "array" + }, + "version": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "LakehouseCatalog": { + "properties": { + "database_id": { + "description": "The numerical id of the database", + "type": "integer" + }, + "database_name": { + "description": "The name of the database", + "type": "string" + }, + "id": { + "description": "The numerical id of the catalog", + "type": "integer" + }, + "name": { + "description": "The name of the catalog", + "type": "string" + }, + "sqlalchemy_uri": { + "description": "The SQLAlchemy URI", + "type": "string" + } + }, + "type": "object" + }, + "LakehouseConnectRequestSchema": { + "properties": { + "catalogs": { + "description": "A list of catalogs to connect to. If empty or undefined, connect all available catalogs.", + "example": ["my_catalog"], + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "database_names": { + "description": "Custom catalog-database name mappings. If undefined, the default naming convention will be used", + "example": { + "my_catalog": "my_database" + }, + "nullable": true, + "type": "object" + }, + "dry_run": { + "description": "Should the task be executed in dry run mode. Useful for testing.", + "example": false, + "type": "boolean" + }, + "engine_type": { + "description": "The type of the engine (only trino is currently supported)", + "enum": ["trino"], + "example": "trino", + "type": "string" + }, + "engine_url": { + "description": "The URL to the engine", + "example": "https://myengine.corp.apple.com", + "type": "string" + }, + "environment": { + "description": "Prod or Int", + "enum": ["int", "prod"], + "example": "int", + "type": "string" + }, + "name": { + "description": "The name of the Lakehouse (subject to change over time). If left undefined, use lakehouse id", + "example": "My Lakehouse", + "nullable": true, + "type": "string" + }, + "superset_url": { + "description": "The URL of the Superset instance connecting to", + "example": "http://localhost:8088", + "type": "string" + } + }, + "required": [ + "engine_type", + "engine_url", + "environment", + "superset_url" + ], + "type": "object" + }, + "LakehouseConnectResponseSchema": { + "properties": { + "task_id": { + "description": "The id of the connection task", + "type": "string" + } + }, + "type": "object" + }, + "LakehouseConnectResultResponseSchema": { + "properties": { + "existing_catalogs": { + "description": "A list of connected catalogs before the connect operation", + "items": { + "description": "Catalogs", + "items": { + "$ref": "#/components/schemas/LakehouseCatalog" + }, + "type": "array" + }, + "type": "array" + }, + "lakehouse": { + "allOf": [ + { + "$ref": "#/components/schemas/LakehouseGetResponseSchema" + } + ], + "description": "The connected Lakehouse", + "nullable": true + }, + "message": { + "description": "A message to provide additional context on what has happened", + "type": "string" + }, + "new_catalogs": { + "description": "A list of newly connected catalogs after the connect operation", + "items": { + "description": "Catalogs", + "items": { + "$ref": "#/components/schemas/LakehouseCatalog" + }, + "type": "array" + }, + "type": "array" + }, + "status": { + "description": "The status of the task", + "enum": [ + "scheduled", + "running", + "completed", + "failed", + "reconnect_failed", + "cancelled" + ], + "type": "string" + } + }, + "required": ["lakehouse"], + "type": "object" + }, + "LakehouseConnectStatusResponseSchema": { + "properties": { + "message": { + "description": "A message to provide additional context on what has happened", + "type": "string" + }, + "status": { + "description": "The status of the task", + "enum": [ + "scheduled", + "running", + "completed", + "failed", + "reconnect_failed", + "cancelled" + ], + "type": "string" + } + }, + "type": "object" + }, + "LakehouseDatasetListResponseSchema": { + "properties": { + "name": { + "description": "The name of the dataset", + "type": "string" + }, + "schema": { + "description": "The schema", + "nullable": true, + "type": "string" + }, + "sql": { + "description": "The virtual dataset query", + "type": "string" + } + }, + "required": ["name", "sql"], + "type": "object" + }, + "LakehouseDatasetRequestSchema": { + "properties": { + "catalog": { + "description": "The catalog. If left empty, uses an arbitrary connected catalog.", + "nullable": true, + "type": "string" + }, + "lakehouse_id": { + "description": "Deprecated, not used for anything", + "type": "string" + }, + "name": { + "description": "The name of the dataset to be created", + "type": "string" + }, + "overwrite": { + "default": false, + "description": "Should the virtual dataset be overwritten if it already exists", + "type": "boolean" + }, + "schema": { + "description": "The schema", + "nullable": true, + "type": "string" + }, + "sql": { + "description": "The virtual dataset query", + "type": "string" + } + }, + "required": ["name", "sql"], + "type": "object" + }, + "LakehouseDatasetResponseSchema": { + "properties": { + "url": { + "description": "The url for exploring the virtual dataset", + "type": "string" + } + }, + "required": ["url"], + "type": "object" + }, + "LakehouseDisconnectResponseSchema": { + "properties": { + "lakehouse": { + "allOf": [ + { + "$ref": "#/components/schemas/LakehouseGetResponseSchema" + } + ], + "description": "A list of disconnected lakehouses" + } + }, + "type": "object" + }, + "LakehouseGetListResponseSchema": { + "properties": { + "lakehouses": { + "description": "A list of connected lakehouses", + "items": { + "$ref": "#/components/schemas/LakehouseGetResponseSchema" + }, + "type": "array" + } + }, + "type": "object" + }, + "LakehouseGetResponseSchema": { + "properties": { + "catalogs": { + "description": "A list of connected catalogs", + "items": { + "description": "Catalogs", + "items": { + "$ref": "#/components/schemas/LakehouseCatalog" + }, + "type": "array" + }, + "type": "array" + }, + "engine_url": { + "description": "The URL uf the engine", + "type": "string" + }, + "id": { + "description": "The unique id of the Lakehouse", + "type": "string" + }, + "name": { + "type": "string" + }, + "superset_url": { + "description": "The URL uf the Superset instance", + "type": "string" + } + }, + "type": "object" + }, "LogRestApi.get": { "properties": { "action": { @@ -5883,7 +6848,7 @@ "type": "integer" }, "user": { - "$ref": "#/components/schemas/LogRestApi.get.User" + "$ref": "#/components/schemas/LogRestApi.get.AppleUser" }, "user_id": { "nullable": true, @@ -5892,7 +6857,7 @@ }, "type": "object" }, - "LogRestApi.get.User": { + "LogRestApi.get.AppleUser": { "properties": { "username": { "maxLength": 64, @@ -5936,7 +6901,7 @@ "type": "integer" }, "user": { - "$ref": "#/components/schemas/LogRestApi.get_list.User" + "$ref": "#/components/schemas/LogRestApi.get_list.AppleUser" }, "user_id": { "nullable": true, @@ -5945,7 +6910,7 @@ }, "type": "object" }, - "LogRestApi.get_list.User": { + "LogRestApi.get_list.AppleUser": { "properties": { "username": { "maxLength": 64, @@ -6344,6 +7309,9 @@ }, "RLSRestApi.get_list": { "properties": { + "changed_by": { + "$ref": "#/components/schemas/User" + }, "changed_on_delta_humanized": { "readOnly": true }, @@ -6690,7 +7658,7 @@ }, "type": { "description": "The recipient type, check spec for valid options", - "enum": ["Email", "Slack"], + "enum": ["Email", "Slack", "SlackV2"], "type": "string" } }, @@ -6699,6 +7667,12 @@ }, "ReportRecipientConfigJSON": { "properties": { + "bccTarget": { + "type": "string" + }, + "ccTarget": { + "type": "string" + }, "target": { "type": "string" } @@ -6741,6 +7715,11 @@ "nullable": true, "type": "string" }, + "email_subject": { + "maxLength": 255, + "nullable": true, + "type": "string" + }, "extra": { "readOnly": true }, @@ -6782,7 +7761,7 @@ "type": "string" }, "owners": { - "$ref": "#/components/schemas/ReportScheduleRestApi.get.User" + "$ref": "#/components/schemas/ReportScheduleRestApi.get.AppleUser" }, "recipients": { "$ref": "#/components/schemas/ReportScheduleRestApi.get.ReportRecipients" @@ -6821,6 +7800,23 @@ "required": ["crontab", "name", "recipients", "type"], "type": "object" }, + "ReportScheduleRestApi.get.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ReportScheduleRestApi.get.Dashboard": { "properties": { "dashboard_title": { @@ -6882,23 +7878,6 @@ }, "type": "object" }, - "ReportScheduleRestApi.get.User": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "ReportScheduleRestApi.get_list": { "properties": { "active": { @@ -6906,7 +7885,7 @@ "type": "boolean" }, "changed_by": { - "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User2" + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User" }, "changed_on": { "format": "date-time", @@ -6921,7 +7900,7 @@ "type": "integer" }, "created_by": { - "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User" + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User1" }, "created_on": { "format": "date-time", @@ -6969,7 +7948,7 @@ "type": "string" }, "owners": { - "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User1" + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.AppleUser" }, "recipients": { "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.ReportRecipients" @@ -6986,6 +7965,23 @@ "required": ["crontab", "name", "recipients", "type"], "type": "object" }, + "ReportScheduleRestApi.get_list.AppleUser": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "ReportScheduleRestApi.get_list.ReportRecipients": { "properties": { "id": { @@ -7014,23 +8010,6 @@ "type": "object" }, "ReportScheduleRestApi.get_list.User1": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "ReportScheduleRestApi.get_list.User2": { "properties": { "first_name": { "maxLength": 64, @@ -7088,6 +8067,12 @@ "nullable": true, "type": "string" }, + "email_subject": { + "description": "The report schedule subject line", + "example": "[Report] Report name: Dashboard or chart name", + "nullable": true, + "type": "string" + }, "extra": { "type": "object" }, @@ -7127,7 +8112,7 @@ "type": "array" }, "report_format": { - "enum": ["PNG", "CSV", "TEXT"], + "enum": ["PDF", "PNG", "CSV", "TEXT"], "type": "string" }, "selected_tabs": { @@ -7240,6 +8225,7 @@ "America/Cayman", "America/Chicago", "America/Chihuahua", + "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", @@ -7592,8 +8578,9 @@ "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", - "Europe/Kyiv", + "Europe/Kiev", "Europe/Kirov", + "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", @@ -7756,7 +8743,7 @@ "type": "string" }, "working_timeout": { - "description": "If an alert is staled at a working state, how long until it's state is reseted to error", + "description": "If an alert is staled at a working state, how long until it's state is reset to error", "example": 3600, "minimum": 1, "type": "integer" @@ -7809,6 +8796,12 @@ "nullable": true, "type": "string" }, + "email_subject": { + "description": "The report schedule subject line", + "example": "[Report] Report name: Dashboard or chart name", + "nullable": true, + "type": "string" + }, "extra": { "type": "object" }, @@ -7824,7 +8817,7 @@ "log_retention": { "description": "How long to keep the logs around for this report (in days)", "example": 90, - "minimum": 1, + "minimum": 0, "type": "integer" }, "name": { @@ -7847,7 +8840,7 @@ "type": "array" }, "report_format": { - "enum": ["PNG", "CSV", "TEXT"], + "enum": ["PDF", "PNG", "CSV", "TEXT"], "type": "string" }, "sql": { @@ -7954,6 +8947,7 @@ "America/Cayman", "America/Chicago", "America/Chihuahua", + "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", @@ -8306,8 +9300,9 @@ "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", - "Europe/Kyiv", + "Europe/Kiev", "Europe/Kirov", + "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", @@ -8471,7 +9466,7 @@ "type": "string" }, "working_timeout": { - "description": "If an alert is staled at a working state, how long until it's state is reseted to error", + "description": "If an alert is staled at a working state, how long until it's state is reset to error", "example": 3600, "minimum": 1, "nullable": true, @@ -8526,13 +9521,52 @@ }, "type": "object" }, + "SQLLabBootstrapSchema": { + "properties": { + "active_tab": { + "$ref": "#/components/schemas/TabState" + }, + "databases": { + "additionalProperties": { + "$ref": "#/components/schemas/ImportV1Database" + }, + "type": "object" + }, + "queries": { + "additionalProperties": { + "$ref": "#/components/schemas/QueryResult" + }, + "type": "object" + }, + "tab_state_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "SavedQueryRestApi.get": { "properties": { + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "changed_by": { + "$ref": "#/components/schemas/SavedQueryRestApi.get.User" + }, + "changed_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/SavedQueryRestApi.get.User" + "$ref": "#/components/schemas/SavedQueryRestApi.get.User1" }, "database": { "$ref": "#/components/schemas/SavedQueryRestApi.get.Database" @@ -8598,13 +9632,43 @@ "required": ["first_name", "last_name"], "type": "object" }, + "SavedQueryRestApi.get.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "SavedQueryRestApi.get_list": { "properties": { + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "changed_by": { + "$ref": "#/components/schemas/SavedQueryRestApi.get_list.User" + }, + "changed_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/SavedQueryRestApi.get_list.User" + "$ref": "#/components/schemas/SavedQueryRestApi.get_list.User1" }, "created_on": { "format": "date-time", @@ -8704,8 +9768,30 @@ "required": ["first_name", "last_name"], "type": "object" }, + "SavedQueryRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, "SavedQueryRestApi.post": { "properties": { + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, "db_id": { "nullable": true, "type": "integer" @@ -8714,6 +9800,10 @@ "nullable": true, "type": "string" }, + "extra_json": { + "nullable": true, + "type": "string" + }, "label": { "maxLength": 256, "nullable": true, @@ -8737,6 +9827,11 @@ }, "SavedQueryRestApi.put": { "properties": { + "catalog": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, "db_id": { "nullable": true, "type": "integer" @@ -8745,6 +9840,10 @@ "nullable": true, "type": "string" }, + "extra_json": { + "nullable": true, + "type": "string" + }, "label": { "maxLength": 256, "nullable": true, @@ -8872,6 +9971,106 @@ }, "type": "object" }, + "Tab": { + "properties": { + "children": { + "items": { + "$ref": "#/components/schemas/Tab" + }, + "type": "array" + }, + "parents": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "TabState": { + "properties": { + "active": { + "type": "boolean" + }, + "autorun": { + "type": "boolean" + }, + "database_id": { + "type": "integer" + }, + "extra_json": { + "type": "object" + }, + "hide_left_bar": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "latest_query": { + "$ref": "#/components/schemas/QueryResult" + }, + "query_limit": { + "type": "integer" + }, + "saved_query": { + "nullable": true, + "type": "object" + }, + "schema": { + "type": "string" + }, + "sql": { + "type": "string" + }, + "table_schemas": { + "items": { + "$ref": "#/components/schemas/Table" + }, + "type": "array" + }, + "user_id": { + "type": "integer" + } + }, + "type": "object" + }, + "Table": { + "properties": { + "database_id": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "expanded": { + "type": "boolean" + }, + "id": { + "type": "integer" + }, + "schema": { + "type": "string" + }, + "tab_state_id": { + "type": "integer" + }, + "table": { + "type": "string" + } + }, + "type": "object" + }, "TableExtraMetadataResponseSchema": { "properties": { "clustering": { @@ -9042,21 +10241,24 @@ }, "type": "object" }, - "Tag": { + "TabsPayloadSchema": { "properties": { - "id": { - "type": "integer" + "all_tabs": { + "additionalProperties": { + "type": "string" + }, + "type": "object" }, - "name": { - "type": "string" - }, - "type": { - "enum": [1, 2, 3, 4] + "tab_tree": { + "items": { + "$ref": "#/components/schemas/Tab" + }, + "type": "array" } }, "type": "object" }, - "Tag1": { + "Tag": { "properties": { "id": { "type": "integer" @@ -9084,16 +10286,75 @@ }, "type": "object" }, + "TagObject": { + "properties": { + "description": { + "nullable": true, + "type": "string" + }, + "name": { + "minLength": 1, + "type": "string" + }, + "objects_to_tag": { + "description": "Objects to tag", + "items": {}, + "type": "array" + } + }, + "type": "object" + }, + "TagPostBulkResponseObject": { + "properties": { + "objects_skipped": { + "description": "Objects to tag", + "items": {}, + "type": "array" + }, + "objects_tagged": { + "description": "Objects to tag", + "items": {}, + "type": "array" + } + }, + "type": "object" + }, + "TagPostBulkResponseSchema": { + "properties": { + "result": { + "$ref": "#/components/schemas/TagPostBulkResponseObject" + } + }, + "type": "object" + }, + "TagPostBulkSchema": { + "properties": { + "tags": { + "items": { + "$ref": "#/components/schemas/TagObject" + }, + "type": "array" + } + }, + "type": "object" + }, "TagRestApi.get": { "properties": { "changed_by": { - "$ref": "#/components/schemas/TagRestApi.get.User1" + "$ref": "#/components/schemas/TagRestApi.get.User" }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/TagRestApi.get.User" + "$ref": "#/components/schemas/TagRestApi.get.User1" + }, + "created_on_delta_humanized": { + "readOnly": true + }, + "description": { + "nullable": true, + "type": "string" }, "id": { "type": "integer" @@ -9110,6 +10371,20 @@ "type": "object" }, "TagRestApi.get.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": ["first_name", "last_name"], + "type": "object" + }, + "TagRestApi.get.User1": { "properties": { "active": { "nullable": true, @@ -9126,7 +10401,7 @@ "type": "string" }, "email": { - "maxLength": 64, + "maxLength": 320, "type": "string" }, "fail_login_count": { @@ -9166,30 +10441,23 @@ "required": ["email", "first_name", "last_name", "username"], "type": "object" }, - "TagRestApi.get.User1": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, "TagRestApi.get_list": { "properties": { "changed_by": { - "$ref": "#/components/schemas/TagRestApi.get_list.User1" + "$ref": "#/components/schemas/TagRestApi.get_list.User" }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/TagRestApi.get_list.User" + "$ref": "#/components/schemas/TagRestApi.get_list.User1" + }, + "created_on_delta_humanized": { + "readOnly": true + }, + "description": { + "nullable": true, + "type": "string" }, "id": { "type": "integer" @@ -9235,10 +10503,17 @@ }, "TagRestApi.post": { "properties": { - "tags": { - "items": { - "type": "string" - }, + "description": { + "nullable": true, + "type": "string" + }, + "name": { + "minLength": 1, + "type": "string" + }, + "objects_to_tag": { + "description": "Objects to tag", + "items": {}, "type": "array" } }, @@ -9246,8 +10521,18 @@ }, "TagRestApi.put": { "properties": { - "id": { - "type": "integer" + "description": { + "nullable": true, + "type": "string" + }, + "name": { + "minLength": 1, + "type": "string" + }, + "objects_to_tag": { + "description": "Objects to tag", + "items": {}, + "type": "array" } }, "type": "object" @@ -9270,6 +10555,18 @@ "name": { "type": "string" }, + "owners": { + "items": { + "$ref": "#/components/schemas/User1" + }, + "type": "array" + }, + "tags": { + "items": { + "$ref": "#/components/schemas/TagGetResponseSchema" + }, + "type": "array" + }, "type": { "type": "string" }, @@ -9299,6 +10596,33 @@ "required": ["value"], "type": "object" }, + "UploadFileMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/UploadFileMetadataItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "UploadFileMetadataItem": { + "properties": { + "column_names": { + "description": "A list of columns names in the sheet", + "items": { + "type": "string" + }, + "type": "array" + }, + "sheet_name": { + "description": "The name of the sheet", + "type": "string" + } + }, + "type": "object" + }, "User": { "properties": { "first_name": { @@ -9372,6 +10696,10 @@ }, "ValidateSQLRequest": { "properties": { + "catalog": { + "nullable": true, + "type": "string" + }, "schema": { "nullable": true, "type": "string" @@ -9435,8 +10763,19 @@ "required": ["type", "values"], "type": "object" }, + "database_catalogs_query_schema": { + "properties": { + "force": { + "type": "boolean" + } + }, + "type": "object" + }, "database_schemas_query_schema": { "properties": { + "catalog": { + "type": "string" + }, "force": { "type": "boolean" } @@ -9445,6 +10784,9 @@ }, "database_tables_query_schema": { "properties": { + "catalog_name": { + "type": "string" + }, "force": { "type": "boolean" }, @@ -9616,6 +10958,12 @@ }, "page_size": { "type": "integer" + }, + "select_columns": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" @@ -9729,6 +11077,7 @@ "paths": { "/api/v1/advanced_data_type/convert": { "get": { + "description": "Returns an AdvancedDataTypeResponse object populated with the passed in args.", "parameters": [ { "content": { @@ -9759,6 +11108,9 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, @@ -9771,13 +11123,12 @@ "jwt": [] } ], - "summary": "Returns a AdvancedDataTypeResponse object populated with the passed in args.", + "summary": "Return an AdvancedDataTypeResponse", "tags": ["Advanced Data Type"] } }, "/api/v1/advanced_data_type/types": { "get": { - "description": "Returns a list of available advanced data types.", "responses": { "200": { "content": { @@ -9800,6 +11151,9 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, @@ -9812,12 +11166,12 @@ "jwt": [] } ], + "summary": "Return a list of available advanced data types", "tags": ["Advanced Data Type"] } }, "/api/v1/annotation_layer/": { "delete": { - "description": "Deletes multiple annotation layers in a bulk operation.", "parameters": [ { "content": { @@ -9865,10 +11219,11 @@ "jwt": [] } ], + "summary": "Delete multiple annotation layers in a bulk operation", "tags": ["Annotation Layers"] }, "get": { - "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -9970,10 +11325,10 @@ "jwt": [] } ], + "summary": "Get a list of annotation layers", "tags": ["Annotation Layers"] }, "post": { - "description": "Create an Annotation layer", "requestBody": { "content": { "application/json": { @@ -10022,6 +11377,7 @@ "jwt": [] } ], + "summary": "Create an annotation layer", "tags": ["Annotation Layers"] } }, @@ -10106,6 +11462,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Annotation Layers"] } }, @@ -10161,12 +11518,12 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Annotation Layers"] } }, "/api/v1/annotation_layer/{pk}": { "delete": { - "description": "Delete Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10209,10 +11566,11 @@ "jwt": [] } ], + "summary": "Delete annotation layer", "tags": ["Annotation Layers"] }, "get": { - "description": "Get an Annotation layer", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -10307,10 +11665,10 @@ "jwt": [] } ], + "summary": "Get an annotation layer", "tags": ["Annotation Layers"] }, "put": { - "description": "Update an Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10370,12 +11728,12 @@ "jwt": [] } ], + "summary": "Update an annotation layer", "tags": ["Annotation Layers"] } }, "/api/v1/annotation_layer/{pk}/annotation/": { "delete": { - "description": "Deletes multiple annotation in a bulk operation.", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10432,10 +11790,11 @@ "jwt": [] } ], + "summary": "Bulk delete annotation layers", "tags": ["Annotation Layers"] }, "get": { - "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "description": "The annotation layer id for this annotation", @@ -10507,10 +11866,10 @@ "jwt": [] } ], + "summary": "Get a list of annotation layers", "tags": ["Annotation Layers"] }, "post": { - "description": "Create an Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10570,12 +11929,12 @@ "jwt": [] } ], + "summary": "Create an annotation layer", "tags": ["Annotation Layers"] } }, "/api/v1/annotation_layer/{pk}/annotation/{annotation_id}": { "delete": { - "description": "Delete Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10627,10 +11986,10 @@ "jwt": [] } ], + "summary": "Delete annotation layer", "tags": ["Annotation Layers"] }, "get": { - "description": "Get an Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10703,10 +12062,10 @@ "jwt": [] } ], + "summary": "Get an annotation layer", "tags": ["Annotation Layers"] }, "put": { - "description": "Update an Annotation layer", "parameters": [ { "description": "The annotation layer pk for this annotation", @@ -10775,12 +12134,44 @@ "jwt": [] } ], + "summary": "Update an annotation layer", "tags": ["Annotation Layers"] } }, + "/api/v1/apple/health": { + "get": { + "description": "Endpoint for checking the health status of the metastore and cache", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppleHealthResponseSchema" + } + } + }, + "description": "The" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "summary": "Get the health status of the metastore and cache", + "tags": ["Apple"] + } + }, "/api/v1/assets/export/": { "get": { - "description": "Returns a ZIP file with all the Superset assets (databases, datasets, charts, dashboards, saved queries) as YAML files.", + "description": "Gets a ZIP file with all the Superset assets (databases, datasets, charts, dashboards, saved queries) as YAML files.", "responses": { "200": { "content": { @@ -10808,6 +12199,7 @@ "jwt": [] } ], + "summary": "Export all assets", "tags": ["Import/export"] } }, @@ -10880,6 +12272,7 @@ "jwt": [] } ], + "summary": "Import multiple assets", "tags": ["Import/export"] } }, @@ -10953,12 +12346,12 @@ "jwt": [] } ], + "summary": "Read off of the Redis events stream", "tags": ["AsyncEventsRestApi"] } }, "/api/v1/available_domains/": { "get": { - "description": "Get all available domains", "responses": { "200": { "content": { @@ -10987,12 +12380,13 @@ "jwt": [] } ], + "summary": "Get all available domains", "tags": ["Available Domains"] } }, "/api/v1/cachekey/invalidate": { "post": { - "description": "Takes a list of datasources, finds the associated cache records and invalidates them and removes the database records", + "description": "Takes a list of datasources, finds and invalidates the associated cache records and removes the database records.", "requestBody": { "content": { "application/json": { @@ -11020,12 +12414,12 @@ "jwt": [] } ], + "summary": "Invalidate cache records and remove the database records", "tags": ["CacheRestApi"] } }, "/api/v1/chart/": { "delete": { - "description": "Deletes multiple Charts in a bulk operation.", "parameters": [ { "content": { @@ -11076,10 +12470,11 @@ "jwt": [] } ], + "summary": "Bulk delete charts", "tags": ["Charts"] }, "get": { - "description": "Get a list of charts, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of charts, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -11181,10 +12576,10 @@ "jwt": [] } ], + "summary": "Get a list of charts", "tags": ["Charts"] }, "post": { - "description": "Create a new Chart.", "requestBody": { "content": { "application/json": { @@ -11236,12 +12631,13 @@ "jwt": [] } ], + "summary": "Create a new chart", "tags": ["Charts"] } }, "/api/v1/chart/_info": { "get": { - "description": "Several metadata information about chart API endpoints.", + "description": "Get metadata information about this API resource", "parameters": [ { "content": { @@ -11320,6 +12716,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Charts"] } }, @@ -11373,6 +12770,7 @@ "jwt": [] } ], + "summary": "Return payload data response for the given query", "tags": ["Charts"] } }, @@ -11421,12 +12819,12 @@ "jwt": [] } ], + "summary": "Return payload data response for the given query", "tags": ["Charts"] } }, "/api/v1/chart/export/": { "get": { - "description": "Exports multiple charts and downloads them as YAML files", "parameters": [ { "content": { @@ -11470,12 +12868,12 @@ "jwt": [] } ], + "summary": "Download multiple charts as YAML files", "tags": ["Charts"] } }, "/api/v1/chart/favorite_status/": { "get": { - "description": "Check favorited dashboards for current user", "parameters": [ { "content": { @@ -11518,6 +12916,7 @@ "jwt": [] } ], + "summary": "Check favorited charts for current user", "tags": ["Charts"] } }, @@ -11594,6 +12993,7 @@ "jwt": [] } ], + "summary": "Import chart(s) with associated datasets and databases", "tags": ["Charts"] } }, @@ -11650,6 +13050,7 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Charts"] } }, @@ -11693,13 +13094,12 @@ "jwt": [] } ], - "summary": "Warms up the cache for the chart", + "summary": "Warm up the cache for the chart", "tags": ["Charts"] } }, "/api/v1/chart/{pk}": { "delete": { - "description": "Deletes a Chart.", "parameters": [ { "in": "path", @@ -11747,10 +13147,11 @@ "jwt": [] } ], + "summary": "Delete a chart", "tags": ["Charts"] }, "get": { - "description": "Get a chart detail information.", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -11845,10 +13246,10 @@ "jwt": [] } ], + "summary": "Get a chart detail information", "tags": ["Charts"] }, "put": { - "description": "Changes a Chart.", "parameters": [ { "in": "path", @@ -11913,12 +13314,12 @@ "jwt": [] } ], + "summary": "Update a chart", "tags": ["Charts"] } }, "/api/v1/chart/{pk}/cache_screenshot/": { "get": { - "description": "Compute and cache a screenshot.", "parameters": [ { "in": "path", @@ -11969,6 +13370,7 @@ "jwt": [] } ], + "summary": "Compute and cache a screenshot", "tags": ["Charts"] } }, @@ -12046,12 +13448,12 @@ "jwt": [] } ], + "summary": "Return payload data response for a chart", "tags": ["Charts"] } }, "/api/v1/chart/{pk}/favorites/": { "delete": { - "description": "Remove the chart from the user favorite list", "parameters": [ { "in": "path", @@ -12093,10 +13495,10 @@ "jwt": [] } ], + "summary": "Remove the chart from the user favorite list", "tags": ["Charts"] }, "post": { - "description": "Marks the chart as favorite for the current user", "parameters": [ { "in": "path", @@ -12138,12 +13540,12 @@ "jwt": [] } ], + "summary": "Mark the chart as favorite for the current user", "tags": ["Charts"] } }, "/api/v1/chart/{pk}/screenshot/{digest}/": { "get": { - "description": "Get a computed screenshot from cache.", "parameters": [ { "in": "path", @@ -12192,6 +13594,7 @@ "jwt": [] } ], + "summary": "Get a computed screenshot from cache", "tags": ["Charts"] } }, @@ -12249,12 +13652,12 @@ "jwt": [] } ], + "summary": "Get chart thumbnail", "tags": ["Charts"] } }, "/api/v1/css_template/": { "delete": { - "description": "Deletes multiple css templates in a bulk operation.", "parameters": [ { "content": { @@ -12302,10 +13705,11 @@ "jwt": [] } ], + "summary": "Bulk delete CSS templates", "tags": ["CSS Templates"] }, "get": { - "description": "Get a list of CSS templates, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of CSS templates, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -12407,10 +13811,10 @@ "jwt": [] } ], + "summary": "Get a list of CSS templates", "tags": ["CSS Templates"] }, "post": { - "description": "Create a CSS template", "requestBody": { "content": { "application/json": { @@ -12459,6 +13863,7 @@ "jwt": [] } ], + "summary": "Create a CSS template", "tags": ["CSS Templates"] } }, @@ -12543,6 +13948,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["CSS Templates"] } }, @@ -12598,12 +14004,12 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["CSS Templates"] } }, "/api/v1/css_template/{pk}": { "delete": { - "description": "Delete CSS template", "parameters": [ { "in": "path", @@ -12645,10 +14051,11 @@ "jwt": [] } ], + "summary": "Delete a CSS template", "tags": ["CSS Templates"] }, "get": { - "description": "Get a CSS template", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -12743,10 +14150,10 @@ "jwt": [] } ], + "summary": "Get a CSS template", "tags": ["CSS Templates"] }, "put": { - "description": "Update a CSS template", "parameters": [ { "in": "path", @@ -12805,12 +14212,12 @@ "jwt": [] } ], + "summary": "Update a CSS template", "tags": ["CSS Templates"] } }, "/api/v1/dashboard/": { "delete": { - "description": "Deletes multiple Dashboards in a bulk operation.", "parameters": [ { "content": { @@ -12861,10 +14268,11 @@ "jwt": [] } ], + "summary": "Bulk delete dashboards", "tags": ["Dashboards"] }, "get": { - "description": "Get a list of dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -12966,10 +14374,10 @@ "jwt": [] } ], + "summary": "Get a list of dashboards", "tags": ["Dashboards"] }, "post": { - "description": "Create a new Dashboard.", "requestBody": { "content": { "application/json": { @@ -13018,12 +14426,13 @@ "jwt": [] } ], + "summary": "Create a new dashboard", "tags": ["Dashboards"] } }, "/api/v1/dashboard/_info": { "get": { - "description": "Several metadata information about dashboard API endpoints.", + "description": "Get metadata information about this API resource", "parameters": [ { "content": { @@ -13102,12 +14511,12 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Dashboards"] } }, "/api/v1/dashboard/export/": { "get": { - "description": "Exports multiple Dashboards and downloads them as YAML files.", "parameters": [ { "content": { @@ -13153,12 +14562,12 @@ "jwt": [] } ], + "summary": "Download multiple dashboards as YAML files", "tags": ["Dashboards"] } }, "/api/v1/dashboard/favorite_status/": { "get": { - "description": "Check favorited dashboards for current user", "parameters": [ { "content": { @@ -13201,6 +14610,7 @@ "jwt": [] } ], + "summary": "Check favorited dashboards for current user", "tags": ["Dashboards"] } }, @@ -13277,12 +14687,12 @@ "jwt": [] } ], + "summary": "Import dashboard(s) with associated charts/datasets/databases", "tags": ["Dashboards"] } }, "/api/v1/dashboard/permalink/{key}": { "get": { - "description": "Retrives dashboard state associated with a permanent link.", "parameters": [ { "in": "path", @@ -13331,6 +14741,7 @@ "jwt": [] } ], + "summary": "Get dashboard's permanent link state", "tags": ["Dashboard Permanent Link"] } }, @@ -13387,12 +14798,12 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Dashboards"] } }, "/api/v1/dashboard/{id_or_slug}": { "get": { - "description": "Get a dashboard detail information.", "parameters": [ { "description": "Either the id of the dashboard, or its slug", @@ -13438,12 +14849,12 @@ "jwt": [] } ], + "summary": "Get a dashboard detail information", "tags": ["Dashboards"] } }, "/api/v1/dashboard/{id_or_slug}/charts": { "get": { - "description": "Get the chart definitions for a given dashboard", "parameters": [ { "in": "path", @@ -13491,6 +14902,7 @@ "jwt": [] } ], + "summary": "Get a dashboard's chart definitions.", "tags": ["Dashboards"] } }, @@ -13557,7 +14969,7 @@ "jwt": [] } ], - "summary": "Makes a copy of an existing dashboard", + "summary": "Create a copy of an existing dashboard", "tags": ["Dashboards"] } }, @@ -13612,12 +15024,12 @@ "jwt": [] } ], + "summary": "Get dashboard's datasets", "tags": ["Dashboards"] } }, "/api/v1/dashboard/{id_or_slug}/embedded": { "delete": { - "description": "Removes a dashboard's embedded configuration.", "parameters": [ { "description": "The dashboard id or slug", @@ -13657,10 +15069,10 @@ "jwt": [] } ], + "summary": "Delete a dashboard's embedded configuration", "tags": ["Dashboards"] }, "get": { - "description": "Returns the dashboard's embedded configuration", "parameters": [ { "description": "The dashboard id or slug", @@ -13700,10 +15112,10 @@ "jwt": [] } ], + "summary": "Get the dashboard's embedded configuration", "tags": ["Dashboards"] }, "post": { - "description": "Sets a dashboard's embedded configuration.", "parameters": [ { "description": "The dashboard id or slug", @@ -13754,6 +15166,7 @@ "jwt": [] } ], + "summary": "Set a dashboard's embedded configuration", "tags": ["Dashboards"] }, "put": { @@ -13811,9 +15224,63 @@ "tags": ["Dashboards"] } }, + "/api/v1/dashboard/{id_or_slug}/tabs": { + "get": { + "description": "Returns a list of a dashboard's tabs and dashboard's nested tree structure for associated tabs.", + "parameters": [ + { + "description": "Either the id of the dashboard, or its slug", + "in": "path", + "name": "id_or_slug", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "items": { + "$ref": "#/components/schemas/TabsPayloadSchema" + }, + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Dashboard tabs" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get dashboard's tabs", + "tags": ["Dashboards"] + } + }, "/api/v1/dashboard/{pk}": { "delete": { - "description": "Deletes a Dashboard.", "parameters": [ { "in": "path", @@ -13861,10 +15328,10 @@ "jwt": [] } ], + "summary": "Delete a dashboard", "tags": ["Dashboards"] }, "put": { - "description": "Changes a Dashboard.", "parameters": [ { "in": "path", @@ -13932,12 +15399,66 @@ "jwt": [] } ], + "summary": "Update a dashboard", + "tags": ["Dashboards"] + } + }, + "/api/v1/dashboard/{pk}/cache_dashboard_screenshot/": { + "post": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardScreenshotPostSchema" + } + } + } + }, + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardCacheScreenshotResponseSchema" + } + } + }, + "description": "Dashboard async result" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Compute and cache a screenshot", "tags": ["Dashboards"] } }, "/api/v1/dashboard/{pk}/favorites/": { "delete": { - "description": "Remove the dashboard from the user favorite list", "parameters": [ { "in": "path", @@ -13979,10 +15500,10 @@ "jwt": [] } ], + "summary": "Remove the dashboard from the user favorite list", "tags": ["Dashboards"] }, "post": { - "description": "Marks the dashboard as favorite for the current user", "parameters": [ { "in": "path", @@ -14024,12 +15545,12 @@ "jwt": [] } ], + "summary": "Mark the dashboard as favorite for the current user", "tags": ["Dashboards"] } }, "/api/v1/dashboard/{pk}/filter_state": { "post": { - "description": "Stores a new value.", "parameters": [ { "in": "path", @@ -14092,12 +15613,12 @@ "jwt": [] } ], + "summary": "Create a dashboard's filter state", "tags": ["Dashboard Filter State"] } }, "/api/v1/dashboard/{pk}/filter_state/{key}": { "delete": { - "description": "Deletes a value.", "parameters": [ { "in": "path", @@ -14155,10 +15676,10 @@ "jwt": [] } ], + "summary": "Delete a dashboard's filter state value", "tags": ["Dashboard Filter State"] }, "get": { - "description": "Retrives a value.", "parameters": [ { "in": "path", @@ -14215,10 +15736,10 @@ "jwt": [] } ], + "summary": "Get a dashboard's filter state value", "tags": ["Dashboard Filter State"] }, "put": { - "description": "Updates an existing value.", "parameters": [ { "in": "path", @@ -14292,12 +15813,79 @@ "jwt": [] } ], + "summary": "Update a dashboard's filter state value", "tags": ["Dashboard Filter State"] } }, + "/api/v1/dashboard/{pk}/filters": { + "put": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardNativeFiltersConfigUpdateSchema" + } + } + }, + "description": "Native filters configuration", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Dashboard native filters updated" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Update native filters configuration for a dashboard.", + "tags": ["Dashboards"] + } + }, "/api/v1/dashboard/{pk}/permalink": { "post": { - "description": "Stores a new permanent link.", "parameters": [ { "in": "path", @@ -14357,12 +15945,67 @@ "jwt": [] } ], + "summary": "Create a new dashboard's permanent link", "tags": ["Dashboard Permanent Link"] } }, + "/api/v1/dashboard/{pk}/screenshot/{digest}/": { + "get": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "in": "path", + "name": "digest", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "image/*": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "Dashboard thumbnail image" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get a computed screenshot from cache", + "tags": ["Dashboards"] + } + }, "/api/v1/dashboard/{pk}/thumbnail/{digest}/": { "get": { - "description": "Compute async or get already computed dashboard thumbnail from cache.", + "description": "Computes async or get already computed dashboard thumbnail from cache.", "parameters": [ { "in": "path", @@ -14441,12 +16084,13 @@ "jwt": [] } ], + "summary": "Get dashboard's thumbnail", "tags": ["Dashboards"] } }, "/api/v1/database/": { "get": { - "description": "Get a list of models", + "description": "Gets a list of databases, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -14548,10 +16192,10 @@ "jwt": [] } ], + "summary": "Get a list of databases", "tags": ["Database"] }, "post": { - "description": "Create a new Database.", "requestBody": { "content": { "application/json": { @@ -14600,6 +16244,7 @@ "jwt": [] } ], + "summary": "Create a new database", "tags": ["Database"] } }, @@ -14684,12 +16329,12 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Database"] } }, "/api/v1/database/available/": { "get": { - "description": "Get names of databases currently available", "responses": { "200": { "content": { @@ -14763,12 +16408,162 @@ "jwt": [] } ], + "summary": "Get names of databases currently available", + "tags": ["Database"] + } + }, + "/api/v1/database/columnar_metadata/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/ColumnarMetadataUploadFilePostSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "$ref": "#/components/schemas/UploadFileMetadata" + } + }, + "type": "object" + } + } + }, + "description": "Columnar upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload a Columnar file and returns file metadata", + "tags": ["Database"] + } + }, + "/api/v1/database/csv_metadata/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/CSVMetadataUploadFilePostSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "$ref": "#/components/schemas/UploadFileMetadata" + } + }, + "type": "object" + } + } + }, + "description": "Columnar upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload an CSV file and returns file metadata", + "tags": ["Database"] + } + }, + "/api/v1/database/excel_metadata/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/ExcelMetadataUploadFilePostSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "$ref": "#/components/schemas/UploadFileMetadata" + } + }, + "type": "object" + } + } + }, + "description": "Columnar upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload an Excel file and returns file metadata", "tags": ["Database"] } }, "/api/v1/database/export/": { "get": { - "description": "Download database(s) and associated dataset(s) as a zip file", "parameters": [ { "content": { @@ -14809,6 +16604,7 @@ "jwt": [] } ], + "summary": "Download database(s) and associated dataset(s) as a zip file", "tags": ["Database"] } }, @@ -14885,12 +16681,131 @@ "jwt": [] } ], + "summary": "Import database(s) with associated datasets", + "tags": ["Database"] + } + }, + "/api/v1/database/oauth2/": { + "get": { + "description": "-> Receive and store personal access tokens from OAuth for user-level authorization", + "parameters": [ + { + "in": "query", + "name": "state", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "code", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "scope", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "error", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + }, + "description": "A dummy self-closing HTML page" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Receive personal access tokens from OAuth2", + "tags": ["Database"] + } + }, + "/api/v1/database/related/{column_name}": { + "get": { + "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_related_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelatedResponseSchema" + } + } + }, + "description": "Related column data" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get related fields data", "tags": ["Database"] } }, "/api/v1/database/test_connection/": { "post": { - "description": "Tests a database connection", "requestBody": { "content": { "application/json": { @@ -14933,12 +16848,12 @@ "jwt": [] } ], + "summary": "Test a database connection", "tags": ["Database"] } }, "/api/v1/database/validate_parameters/": { "post": { - "description": "Validates parameters used to connect to a database", "requestBody": { "content": { "application/json": { @@ -14981,12 +16896,12 @@ "jwt": [] } ], + "summary": "Validate database connection parameters", "tags": ["Database"] } }, "/api/v1/database/{pk}": { "delete": { - "description": "Deletes a Database.", "parameters": [ { "in": "path", @@ -15034,10 +16949,10 @@ "jwt": [] } ], + "summary": "Delete a database", "tags": ["Database"] }, "get": { - "description": "Get a database", "parameters": [ { "description": "The database id", @@ -15078,10 +16993,10 @@ "jwt": [] } ], + "summary": "Get a database", "tags": ["Database"] }, "put": { - "description": "Changes a Database.", "parameters": [ { "in": "path", @@ -15146,6 +17061,127 @@ "jwt": [] } ], + "summary": "Change a database", + "tags": ["Database"] + } + }, + "/api/v1/database/{pk}/catalogs/": { + "get": { + "parameters": [ + { + "description": "The database id", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/database_catalogs_query_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CatalogsResponseSchema" + } + } + }, + "description": "A List of all catalogs from the database" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get all catalogs from a database", + "tags": ["Database"] + } + }, + "/api/v1/database/{pk}/columnar_upload/": { + "post": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/ColumnarUploadPostSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Columnar upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload a Columnar file to a database table", "tags": ["Database"] } }, @@ -15195,9 +17231,134 @@ "tags": ["Database"] } }, + "/api/v1/database/{pk}/csv_upload/": { + "post": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/CSVUploadPostSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "CSV upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload a CSV file to a database table", + "tags": ["Database"] + } + }, + "/api/v1/database/{pk}/excel_upload/": { + "post": { + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/ExcelUploadPostSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Excel upload response" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Upload an Excel file to a database table", + "tags": ["Database"] + } + }, "/api/v1/database/{pk}/function_names/": { "get": { - "description": "Get function names supported by a database", "parameters": [ { "in": "path", @@ -15234,12 +17395,12 @@ "jwt": [] } ], + "summary": "Get function names supported by a database", "tags": ["Database"] } }, "/api/v1/database/{pk}/related_objects/": { "get": { - "description": "Get charts and dashboards count associated to a database", "parameters": [ { "in": "path", @@ -15276,12 +17437,12 @@ "jwt": [] } ], + "summary": "Get charts and dashboards count associated to a database", "tags": ["Database"] } }, "/api/v1/database/{pk}/schemas/": { "get": { - "description": "Get all schemas from a database", "parameters": [ { "description": "The database id", @@ -15333,6 +17494,7 @@ "jwt": [] } ], + "summary": "Get all schemas from a database", "tags": ["Database"] } }, @@ -15380,7 +17542,6 @@ }, "/api/v1/database/{pk}/select_star/{table_name}/": { "get": { - "description": "Get database select star for table", "parameters": [ { "description": "The database id", @@ -15442,12 +17603,12 @@ "jwt": [] } ], + "summary": "Get database select star for table", "tags": ["Database"] } }, "/api/v1/database/{pk}/select_star/{table_name}/{schema_name}/": { "get": { - "description": "Get database select star for table", "parameters": [ { "description": "The database id", @@ -15509,12 +17670,12 @@ "jwt": [] } ], + "summary": "Get database select star for table", "tags": ["Database"] } }, "/api/v1/database/{pk}/ssh_tunnel/": { "delete": { - "description": "Deletes a SSH Tunnel.", "parameters": [ { "in": "path", @@ -15562,12 +17723,12 @@ "jwt": [] } ], + "summary": "Delete a SSH tunnel", "tags": ["Database"] } }, "/api/v1/database/{pk}/table/{table_name}/{schema_name}/": { "get": { - "description": "Get database table metadata", "parameters": [ { "description": "The database id", @@ -15629,12 +17790,13 @@ "jwt": [] } ], + "summary": "Get database table metadata", "tags": ["Database"] } }, "/api/v1/database/{pk}/table_extra/{table_name}/{schema_name}/": { "get": { - "description": "Response depends on each DB engine spec normally focused on partitions", + "description": "Response depends on each DB engine spec normally focused on partitions.", "parameters": [ { "description": "The database id", @@ -15700,6 +17862,144 @@ "tags": ["Database"] } }, + "/api/v1/database/{pk}/table_metadata/": { + "get": { + "description": "Metadata associated with the table (columns, indexes, etc.)", + "parameters": [ + { + "description": "The database id", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "Table name", + "in": "query", + "name": "table", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Optional table schema, if not passed default schema will be used", + "in": "query", + "name": "schema", + "schema": { + "type": "string" + } + }, + { + "description": "Optional table catalog, if not passed default catalog will be used", + "in": "query", + "name": "catalog", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TableExtraMetadataResponseSchema" + } + } + }, + "description": "Table metadata information" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get table metadata", + "tags": ["Database"] + } + }, + "/api/v1/database/{pk}/table_metadata/extra/": { + "get": { + "description": "Extra metadata associated with the table (partitions, description, etc.)", + "parameters": [ + { + "description": "The database id", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "Table name", + "in": "query", + "name": "name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Optional table schema, if not passed the schema configured in the database will be used", + "in": "query", + "name": "schema", + "schema": { + "type": "string" + } + }, + { + "description": "Optional table catalog, if not passed the catalog configured in the database will be used", + "in": "query", + "name": "catalog", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TableExtraMetadataResponseSchema" + } + } + }, + "description": "Table extra metadata information" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get table extra metadata", + "tags": ["Database"] + } + }, "/api/v1/database/{pk}/tables/": { "get": { "parameters": [ @@ -15774,7 +18074,7 @@ }, "/api/v1/database/{pk}/validate_sql/": { "post": { - "description": "Validates arbitrary SQL.", + "description": "Validates that arbitrary SQL is acceptable for the given database.", "parameters": [ { "in": "path", @@ -15834,13 +18134,12 @@ "jwt": [] } ], - "summary": "Validates that arbitrary sql is acceptable for the given database", + "summary": "Validate arbitrary SQL", "tags": ["Database"] } }, "/api/v1/dataset/": { "delete": { - "description": "Deletes multiple Datasets in a bulk operation.", "parameters": [ { "content": { @@ -15894,10 +18193,11 @@ "jwt": [] } ], + "summary": "Bulk delete datasets", "tags": ["Datasets"] }, "get": { - "description": "Get a list of models", + "description": "Gets a list of datasets, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -15999,10 +18299,10 @@ "jwt": [] } ], + "summary": "Get a list of datasets", "tags": ["Datasets"] }, "post": { - "description": "Create a new Dataset", "requestBody": { "content": { "application/json": { @@ -16051,6 +18351,7 @@ "jwt": [] } ], + "summary": "Create a new dataset", "tags": ["Datasets"] } }, @@ -16135,6 +18436,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Datasets"] } }, @@ -16190,12 +18492,12 @@ "jwt": [] } ], + "summary": "Get distinct values from field data", "tags": ["Datasets"] } }, "/api/v1/dataset/duplicate": { "post": { - "description": "Duplicates a Dataset", "requestBody": { "content": { "application/json": { @@ -16250,12 +18552,12 @@ "jwt": [] } ], + "summary": "Duplicate a dataset", "tags": ["Datasets"] } }, "/api/v1/dataset/export/": { "get": { - "description": "Exports multiple datasets and downloads them as YAML files", "parameters": [ { "content": { @@ -16298,6 +18600,7 @@ "jwt": [] } ], + "summary": "Download multiple datasets as YAML files", "tags": ["Datasets"] } }, @@ -16437,6 +18740,7 @@ "jwt": [] } ], + "summary": "Import dataset(s) with associated databases", "tags": ["Datasets"] } }, @@ -16492,6 +18796,7 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Datasets"] } }, @@ -16535,13 +18840,12 @@ "jwt": [] } ], - "summary": "Warms up the cache for each chart powered by the given table", + "summary": "Warm up the cache for each chart powered by the given table", "tags": ["Datasets"] } }, "/api/v1/dataset/{pk}": { "delete": { - "description": "Deletes a Dataset", "parameters": [ { "in": "path", @@ -16589,12 +18893,14 @@ "jwt": [] } ], + "summary": "Delete a dataset", "tags": ["Datasets"] }, "get": { - "description": "Get an item model", + "description": "Get a dataset by ID", "parameters": [ { + "description": "The dataset ID", "in": "path", "name": "pk", "required": true, @@ -16612,6 +18918,14 @@ }, "in": "query", "name": "q" + }, + { + "description": "Should Jinja macros from sql, metrics and columns be rendered and included in the response", + "in": "query", + "name": "include_rendered_sql", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -16620,51 +18934,19 @@ "application/json": { "schema": { "properties": { - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, "id": { "description": "The item id", "type": "string" }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, "result": { "$ref": "#/components/schemas/DatasetRestApi.get" - }, - "show_columns": { - "description": "A list of columns", - "items": { - "type": "string" - }, - "type": "array" - }, - "show_title": { - "description": "A title to render. Will be translated by babel", - "example": "Show Item Details", - "type": "string" } }, "type": "object" } } }, - "description": "Item from Model" + "description": "Dataset object has been returned." }, "400": { "$ref": "#/components/responses/400" @@ -16672,9 +18954,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -16687,10 +18966,10 @@ "jwt": [] } ], + "summary": "Get a dataset", "tags": ["Datasets"] }, "put": { - "description": "Changes a Dataset", "parameters": [ { "in": "path", @@ -16762,12 +19041,12 @@ "jwt": [] } ], + "summary": "Update a dataset", "tags": ["Datasets"] } }, "/api/v1/dataset/{pk}/column/{column_id}": { "delete": { - "description": "Delete a Dataset column", "parameters": [ { "description": "The dataset pk for this column", @@ -16825,12 +19104,12 @@ "jwt": [] } ], + "summary": "Delete a dataset column", "tags": ["Datasets"] } }, "/api/v1/dataset/{pk}/metric/{metric_id}": { "delete": { - "description": "Delete a Dataset metric", "parameters": [ { "description": "The dataset pk for this column", @@ -16888,12 +19167,12 @@ "jwt": [] } ], + "summary": "Delete a dataset metric", "tags": ["Datasets"] } }, "/api/v1/dataset/{pk}/refresh": { "put": { - "description": "Refreshes and updates columns of a dataset", "parameters": [ { "in": "path", @@ -16941,12 +19220,12 @@ "jwt": [] } ], + "summary": "Refresh and update columns of a dataset", "tags": ["Datasets"] } }, "/api/v1/dataset/{pk}/related_objects": { "get": { - "description": "Get charts and dashboards count associated to a dataset", "parameters": [ { "in": "path", @@ -16983,6 +19262,7 @@ "jwt": [] } ], + "summary": "Get charts and dashboards count associated to a dataset", "tags": ["Datasets"] } }, @@ -17079,7 +19359,6 @@ }, "/api/v1/embedded_dashboard/{uuid}": { "get": { - "description": "Get a report schedule log", "parameters": [ { "description": "The embedded configuration uuid", @@ -17122,12 +19401,13 @@ "jwt": [] } ], + "summary": "Get a report schedule log", "tags": ["Embedded Dashboard"] } }, "/api/v1/explore/": { "get": { - "description": "Assembles Explore related information (form_data, slice, dataset)\\n in a single endpoint.

\\nThe information can be assembled from:
- The cache using a form_data_key
- The metadata database using a permalink_key
- Build from scratch using dataset or slice identifiers.", + "description": "Assembles Explore related information (form_data, slice, dataset) in a single endpoint.

The information can be assembled from:
- The cache using a form_data_key
- The metadata database using a permalink_key
- Build from scratch using dataset or slice identifiers.", "parameters": [ { "in": "query", @@ -17197,13 +19477,12 @@ "jwt": [] } ], - "summary": "Assembles Explore related information (form_data, slice, dataset)\\n in a single endpoint.", + "summary": "Assemble Explore related information in a single endpoint", "tags": ["Explore"] } }, "/api/v1/explore/form_data": { "post": { - "description": "Stores a new form_data.", "parameters": [ { "in": "query", @@ -17258,12 +19537,12 @@ "jwt": [] } ], + "summary": "Create a new form_data", "tags": ["Explore Form Data"] } }, "/api/v1/explore/form_data/{key}": { "delete": { - "description": "Deletes a form_data.", "parameters": [ { "description": "The form_data key.", @@ -17313,10 +19592,10 @@ "jwt": [] } ], + "summary": "Delete a form_data", "tags": ["Explore Form Data"] }, "get": { - "description": "Retrives a form_data.", "parameters": [ { "in": "path", @@ -17365,10 +19644,10 @@ "jwt": [] } ], + "summary": "Get a form_data", "tags": ["Explore Form Data"] }, "put": { - "description": "Updates an existing form_data.", "parameters": [ { "in": "path", @@ -17434,12 +19713,12 @@ "jwt": [] } ], + "summary": "Update an existing form_data", "tags": ["Explore Form Data"] } }, "/api/v1/explore/permalink": { "post": { - "description": "Stores a new permanent link.", "requestBody": { "content": { "application/json": { @@ -17489,12 +19768,12 @@ "jwt": [] } ], + "summary": "Create a new permanent link", "tags": ["Explore Permanent Link"] } }, "/api/v1/explore/permalink/{key}": { "get": { - "description": "Retrives chart state associated with a permanent link.", "parameters": [ { "in": "path", @@ -17543,12 +19822,644 @@ "jwt": [] } ], + "summary": "Get chart's permanent link state", "tags": ["Explore Permanent Link"] } }, + "/api/v1/ias/login_token": { + "post": { + "description": "Endpoint for exchanging IAS tokens for Superset API tokens. IAS Tokens should be requested from the `acssuperset` IAS application, typically using [client credential flow](https://docs.aci.apple.com/ias/tutorials/client_credentials/index.html). At a minimum, an `id_token` needs to be provided, but by providing a `refresh_token` Superset will be able to automatically refresh the token after the initial one expires. However, to be able to refresh the token, `client_id` and `client_secret` must be provided, as the token needs to be refreshed with the same client that was used for logging in. Unless `refresh_token`, `client_id` and `client_secret` are provided, a `refresh_token` will not be returned.\\nThe following scope should be requested in the token request: `offline openid iam:ds:groups corpds:ds:username corpds:ds:firstName corpds:ds:lastName corpds:ds:email iam:ds:explicitgroups`", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IASLoginTokenRequestSchema" + } + } + }, + "description": "Payload containing IAS tokens.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IASLoginTokenResponseSchema" + } + } + }, + "description": "Query result" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": ["IAS"] + } + }, + "/api/v1/ias/profiles": { + "get": { + "description": "Endpoint for retrieving available IAS profiles.", + "parameters": [ + { + "description": "The name of the IAS profile", + "in": "query", + "name": "profile", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IASProfilesResponseSchema" + } + } + }, + "description": "IAS Tokens" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": ["IAS"] + } + }, + "/api/v1/ias/tokens": { + "get": { + "description": "Endpoint for retrieving IAS tokens for the logged in user. If no token is provided, all tokens are returned.", + "parameters": [ + { + "description": "The name of the IAS profile", + "in": "query", + "name": "profile", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IASTokensResponseSchema" + } + } + }, + "description": "IAS Tokens" + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": ["IAS"] + } + }, + "/api/v1/ias/tokens/{pk}": { + "get": { + "description": "Endpoint for retrieving IAS tokens for a specific user. If no token is provided, all tokens are returned. Only Admin users are able to view other users' tokens.", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The name of the IAS profile", + "in": "query", + "name": "profile", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IASTokensResponseSchema" + } + } + }, + "description": "IAS Tokens" + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": ["IAS"] + } + }, + "/api/v1/lakehouse": { + "get": { + "description": "Disconnect a Lakehouse.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseGetListResponseSchema" + } + } + }, + "description": "Lakehouse has been deleted" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get a list of all connected Lakehouses", + "tags": ["Lakehouse"] + } + }, + "/api/v1/lakehouse/{lakehouse_id}": { + "delete": { + "description": "Disconnect a Lakehouse.", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseDisconnectResponseSchema" + } + } + }, + "description": "Lakehouse has been deleted" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Disconnect a Lakehouse and all catalogs", + "tags": ["Lakehouse"] + }, + "get": { + "description": "Get information regarding a connected Lakehouse", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseGetResponseSchema" + } + } + }, + "description": "Lakehouses" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get information about a specific Lakehouse", + "tags": ["Lakehouse"] + }, + "post": { + "description": "Endpoint for connecting a Lakehouse and associated catalogs to the ACS Superset instance.", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseConnectRequestSchema" + } + } + }, + "description": "Payload containing connection parameters.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseConnectResponseSchema" + } + } + }, + "description": "The connection task has been scheduled." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Schedule a task to connect a Lakehouse and catalogs", + "tags": ["Lakehouse"] + } + }, + "/api/v1/lakehouse/{lakehouse_id}/dataset": { + "get": { + "description": "Endpoint for listing all virtual datasets on a Lakehouse", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The catalog. Leave empty for all catalogs", + "in": "query", + "name": "catalog", + "schema": { + "type": "string" + } + }, + { + "description": "The schema. Leave empty for all schemas", + "in": "query", + "name": "schema", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseDatasetListResponseSchema" + } + } + }, + "description": "All virtual datasets satisfying the query params." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get a list of virtual datasets", + "tags": ["Lakehouse"] + }, + "post": { + "description": "Endpoint for creating a virtual dataset from a query", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseDatasetRequestSchema" + } + } + }, + "description": "Payload containing virtual dataset parameters.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseDatasetResponseSchema" + } + } + }, + "description": "The virtual dataset has been created." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Create a virtual dataset out of a query", + "tags": ["Lakehouse"] + } + }, + "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/cancel": { + "post": { + "description": "Endpoint for cancelling a scheduled connection request.", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The id of the connection task", + "in": "path", + "name": "task_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseConnectStatusResponseSchema" + } + } + }, + "description": "The status of the task." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Cancel a running task", + "tags": ["Lakehouse"] + } + }, + "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/result": { + "get": { + "description": "Endpoint for retrieving the payload of a scheduled connection request.", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The id of the connection task", + "in": "path", + "name": "task_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseConnectResultResponseSchema" + } + } + }, + "description": "The status of the task." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get the payload of a completed connection task", + "tags": ["Lakehouse"] + } + }, + "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/status": { + "get": { + "description": "Endpoint for checking what the status of a scheduled connection request is.", + "parameters": [ + { + "description": "The unique id of the lakehouse", + "in": "path", + "name": "lakehouse_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The id of the connection task", + "in": "path", + "name": "task_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LakehouseConnectStatusResponseSchema" + } + } + }, + "description": "The status of the task." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Check the status of a connection task", + "tags": ["Lakehouse"] + } + }, "/api/v1/log/": { "get": { - "description": "Get a list of models", + "description": "Gets a list of logs, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -17650,6 +20561,7 @@ "jwt": [] } ], + "summary": "Get a list of logs", "tags": ["LogRestApi"] }, "post": { @@ -17858,12 +20770,13 @@ "jwt": [] } ], + "summary": "Get a log detail information", "tags": ["LogRestApi"] } }, "/api/v1/me/": { "get": { - "description": "Returns the user object corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.", + "description": "Gets the user object corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.", "responses": { "200": { "content": { @@ -17884,12 +20797,13 @@ "$ref": "#/components/responses/401" } }, + "summary": "Get the user object", "tags": ["Current User"] } }, "/api/v1/me/roles/": { "get": { - "description": "Returns the user roles corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.", + "description": "Gets the user roles corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.", "responses": { "200": { "content": { @@ -17910,6 +20824,7 @@ "$ref": "#/components/responses/401" } }, + "summary": "Get the user roles", "tags": ["Current User"] } }, @@ -17974,7 +20889,7 @@ }, "/api/v1/query/": { "get": { - "description": "Get a list of queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -18076,6 +20991,7 @@ "jwt": [] } ], + "summary": "Get a list of queries", "tags": ["Queries"] } }, @@ -18131,6 +21047,7 @@ "jwt": [] } ], + "summary": "Get distinct values from field data", "tags": ["Queries"] } }, @@ -18186,6 +21103,7 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Queries"] } }, @@ -18299,7 +21217,7 @@ }, "/api/v1/query/{pk}": { "get": { - "description": "Get query detail information.", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -18394,12 +21312,12 @@ "jwt": [] } ], + "summary": "Get query detail information", "tags": ["Queries"] } }, "/api/v1/report/": { "delete": { - "description": "Deletes multiple report schedules in a bulk operation.", "parameters": [ { "content": { @@ -18450,10 +21368,11 @@ "jwt": [] } ], + "summary": "Bulk delete report schedules", "tags": ["Report Schedules"] }, "get": { - "description": "Get a list of report schedules, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of report schedules, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -18555,10 +21474,10 @@ "jwt": [] } ], + "summary": "Get a list of report schedules", "tags": ["Report Schedules"] }, "post": { - "description": "Create a report schedule", "requestBody": { "content": { "application/json": { @@ -18610,6 +21529,7 @@ "jwt": [] } ], + "summary": "Create a report schedule", "tags": ["Report Schedules"] } }, @@ -18694,6 +21614,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Report Schedules"] } }, @@ -18749,12 +21670,80 @@ "jwt": [] } ], + "summary": "Get related fields data", + "tags": ["Report Schedules"] + } + }, + "/api/v1/report/slack_channels/": { + "get": { + "description": "Get slack channels", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_slack_channels_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Slack channels" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get slack channels", "tags": ["Report Schedules"] } }, "/api/v1/report/{pk}": { "delete": { - "description": "Delete a report schedule", "parameters": [ { "description": "The report schedule pk", @@ -18800,10 +21789,11 @@ "jwt": [] } ], + "summary": "Delete a report schedule", "tags": ["Report Schedules"] }, "get": { - "description": "Get a report schedule", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -18898,10 +21888,10 @@ "jwt": [] } ], + "summary": "Get a report schedule", "tags": ["Report Schedules"] }, "put": { - "description": "Update a report schedule", "parameters": [ { "description": "The Report Schedule pk", @@ -18967,12 +21957,13 @@ "jwt": [] } ], + "summary": "Update a report schedule", "tags": ["Report Schedules"] } }, "/api/v1/report/{pk}/log/": { "get": { - "description": "Get a list of report schedule logs, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of report schedule logs, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "description": "The report schedule id for these logs", @@ -19044,12 +22035,12 @@ "jwt": [] } ], + "summary": "Get a list of report schedule logs", "tags": ["Report Schedules"] } }, "/api/v1/report/{pk}/log/{log_id}": { "get": { - "description": "Get a report schedule log", "parameters": [ { "description": "The report schedule pk for log", @@ -19122,12 +22113,12 @@ "jwt": [] } ], + "summary": "Get a report schedule log", "tags": ["Report Schedules"] } }, "/api/v1/rowlevelsecurity/": { "delete": { - "description": "Deletes multiple RLS rules in a bulk operation.", "parameters": [ { "content": { @@ -19178,10 +22169,11 @@ "jwt": [] } ], + "summary": "Bulk delete RLS rules", "tags": ["Row Level Security"] }, "get": { - "description": "Get a list of models", + "description": "Gets a list of RLS, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -19283,10 +22275,10 @@ "jwt": [] } ], + "summary": "Get a list of RLS", "tags": ["Row Level Security"] }, "post": { - "description": "Create a new RLS Rule", "requestBody": { "content": { "application/json": { @@ -19338,6 +22330,7 @@ "jwt": [] } ], + "summary": "Create a new RLS rule", "tags": ["Row Level Security"] } }, @@ -19422,6 +22415,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Row Level Security"] } }, @@ -19477,6 +22471,7 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Row Level Security"] } }, @@ -19523,6 +22518,7 @@ "jwt": [] } ], + "summary": "Delete an RLS", "tags": ["Row Level Security"] }, "get": { @@ -19621,10 +22617,10 @@ "jwt": [] } ], + "summary": "Get an RLS", "tags": ["Row Level Security"] }, "put": { - "description": "Updates an RLS Rule", "parameters": [ { "description": "The Rule pk", @@ -19690,12 +22686,12 @@ "jwt": [] } ], + "summary": "Update an RLS rule", "tags": ["Row Level Security"] } }, "/api/v1/saved_query/": { "delete": { - "description": "Deletes multiple saved queries in a bulk operation.", "parameters": [ { "content": { @@ -19743,10 +22739,11 @@ "jwt": [] } ], + "summary": "Bulk delete saved queries", "tags": ["Queries"] }, "get": { - "description": "Get a list of saved queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Gets a list of saved queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -19848,10 +22845,10 @@ "jwt": [] } ], + "summary": "Get a list of saved queries", "tags": ["Queries"] }, "post": { - "description": "Create a saved query", "requestBody": { "content": { "application/json": { @@ -19900,6 +22897,7 @@ "jwt": [] } ], + "summary": "Create a saved query", "tags": ["Queries"] } }, @@ -19984,6 +22982,7 @@ "jwt": [] } ], + "summary": "Get metadata information about this API resource", "tags": ["Queries"] } }, @@ -20039,12 +23038,12 @@ "jwt": [] } ], + "summary": "Get distinct values from field data", "tags": ["Queries"] } }, "/api/v1/saved_query/export/": { "get": { - "description": "Exports multiple saved queries and downloads them as YAML files", "parameters": [ { "content": { @@ -20088,6 +23087,7 @@ "jwt": [] } ], + "summary": "Download multiple saved queries as YAML files", "tags": ["Queries"] } }, @@ -20164,6 +23164,7 @@ "jwt": [] } ], + "summary": "Import saved queries with associated databases", "tags": ["Queries"] } }, @@ -20219,12 +23220,12 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Queries"] } }, "/api/v1/saved_query/{pk}": { "delete": { - "description": "Delete saved query", "parameters": [ { "in": "path", @@ -20266,10 +23267,11 @@ "jwt": [] } ], + "summary": "Delete a saved query", "tags": ["Queries"] }, "get": { - "description": "Get a saved query", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -20364,10 +23366,10 @@ "jwt": [] } ], + "summary": "Get a saved query", "tags": ["Queries"] }, "put": { - "description": "Update a saved query", "parameters": [ { "in": "path", @@ -20426,12 +23428,12 @@ "jwt": [] } ], + "summary": "Update a saved query", "tags": ["Queries"] } }, "/api/v1/security/csrf_token/": { "get": { - "description": "Fetch the CSRF token", "responses": { "200": { "content": { @@ -20460,12 +23462,12 @@ "jwt": [] } ], + "summary": "Get the CSRF token", "tags": ["Security"] } }, "/api/v1/security/guest_token/": { "post": { - "description": "Fetches a guest token", "requestBody": { "content": { "application/json": { @@ -20508,6 +23510,7 @@ "jwt": [] } ], + "summary": "Get a guest token", "tags": ["Security"] } }, @@ -20614,6 +23617,42 @@ "tags": ["Security"] } }, + "/api/v1/sqllab/": { + "get": { + "description": "Assembles SQLLab bootstrap data (active_tab, databases, queries, tab_state_ids) in a single endpoint. The data can be assembled from the current user's id.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SQLLabBootstrapSchema" + } + } + }, + "description": "Returns the initial bootstrap data for SqlLab" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Get the bootstrap data for SqlLab page", + "tags": ["SQL Lab"] + } + }, "/api/v1/sqllab/estimate/": { "post": { "requestBody": { @@ -20661,13 +23700,12 @@ "jwt": [] } ], - "summary": "Estimates the SQL query execution cost", + "summary": "Estimate the SQL query execution cost", "tags": ["SQL Lab"] } }, "/api/v1/sqllab/execute/": { "post": { - "description": "Starts the execution of a SQL query", "requestBody": { "content": { "application/json": { @@ -20721,6 +23759,7 @@ "jwt": [] } ], + "summary": "Execute a SQL query", "tags": ["SQL Lab"] } }, @@ -20769,7 +23808,58 @@ "jwt": [] } ], - "summary": "Exports the SQL query results to a CSV", + "summary": "Export the SQL query results to a CSV", + "tags": ["SQL Lab"] + } + }, + "/api/v1/sqllab/format_sql/": { + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormatQueryPayloadSchema" + } + } + }, + "description": "SQL query", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Format SQL result" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Format SQL code", "tags": ["SQL Lab"] } }, @@ -20823,13 +23913,13 @@ "jwt": [] } ], - "summary": "Gets the result of a SQL query execution", + "summary": "Get the result of a SQL query execution", "tags": ["SQL Lab"] } }, "/api/v1/tag/": { "delete": { - "description": "Deletes multiple Tags. This will remove all tagged objects with this tag", + "description": "Bulk deletes tags. This will remove all tagged objects with this tag.", "parameters": [ { "content": { @@ -20880,6 +23970,7 @@ "jwt": [] } ], + "summary": "Bulk delete tags", "tags": ["Tags"] }, "get": { @@ -20985,9 +24076,11 @@ "jwt": [] } ], + "summary": "Get a list of tags", "tags": ["Tags"] }, "post": { + "description": "Create a new Tag", "requestBody": { "content": { "application/json": { @@ -20996,7 +24089,7 @@ } } }, - "description": "Model schema", + "description": "Tag schema", "required": true }, "responses": { @@ -21006,7 +24099,7 @@ "schema": { "properties": { "id": { - "type": "string" + "type": "number" }, "result": { "$ref": "#/components/schemas/TagRestApi.post" @@ -21016,7 +24109,7 @@ } } }, - "description": "Item inserted" + "description": "Tag added" }, "400": { "$ref": "#/components/responses/400" @@ -21036,12 +24129,13 @@ "jwt": [] } ], + "summary": "Create a tag", "tags": ["Tags"] } }, "/api/v1/tag/_info": { "get": { - "description": "Several metadata information about tag API endpoints.", + "description": "Get metadata information about this API resource", "parameters": [ { "content": { @@ -21120,12 +24214,62 @@ "jwt": [] } ], + "summary": "Get metadata information about tag API endpoints", + "tags": ["Tags"] + } + }, + "/api/v1/tag/bulk_create": { + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagPostBulkSchema" + } + } + }, + "description": "Tag schema", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagPostBulkResponseSchema" + } + } + }, + "description": "Bulk created tags and tagged objects" + }, + "302": { + "description": "Redirects to the current digest" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "summary": "Bulk create tags and tagged objects", "tags": ["Tags"] } }, "/api/v1/tag/favorite_status/": { "get": { - "description": "Check favorited dashboards for current user", + "description": "Get favorited tags for current user", "parameters": [ { "content": { @@ -21173,7 +24317,6 @@ }, "/api/v1/tag/get_objects/": { "get": { - "description": "Gets all objects associated with a Tag.", "parameters": [ { "in": "path", @@ -21224,6 +24367,7 @@ "jwt": [] } ], + "summary": "Get all objects associated with a tag", "tags": ["Tags"] } }, @@ -21279,12 +24423,13 @@ "jwt": [] } ], + "summary": "Get related fields data", "tags": ["Tags"] } }, "/api/v1/tag/{object_type}/{object_id}/": { "post": { - "description": "Add tags to an object..", + "description": "Adds tags to an object. Creates new tags if they do not already exist.", "parameters": [ { "in": "path", @@ -21348,12 +24493,12 @@ "jwt": [] } ], + "summary": "Add tags to an object", "tags": ["Tags"] } }, "/api/v1/tag/{object_type}/{object_id}/{tag}/": { "delete": { - "description": "Deletes a Tagged Object.", "parameters": [ { "in": "path", @@ -21417,6 +24562,7 @@ "jwt": [] } ], + "summary": "Delete a tagged object", "tags": ["Tags"] } }, @@ -21463,10 +24609,11 @@ "jwt": [] } ], + "summary": "Delete a tag", "tags": ["Tags"] }, "get": { - "description": "Get a tag detail information.", + "description": "Get an item model", "parameters": [ { "in": "path", @@ -21561,9 +24708,11 @@ "jwt": [] } ], + "summary": "Get a tag detail information", "tags": ["Tags"] }, "put": { + "description": "Changes a Tag.", "parameters": [ { "in": "path", @@ -21582,7 +24731,7 @@ } } }, - "description": "Model schema", + "description": "Chart schema", "required": true }, "responses": { @@ -21591,6 +24740,9 @@ "application/json": { "schema": { "properties": { + "id": { + "type": "number" + }, "result": { "$ref": "#/components/schemas/TagRestApi.put" } @@ -21599,7 +24751,7 @@ } } }, - "description": "Item changed" + "description": "Tag changed" }, "400": { "$ref": "#/components/responses/400" @@ -21607,6 +24759,9 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, @@ -21622,6 +24777,7 @@ "jwt": [] } ], + "summary": "Update a tag", "tags": ["Tags"] } }, @@ -21723,6 +24879,35 @@ "tags": ["Tags"] } }, + "/api/v1/user/{user_id}/avatar.png": { + "get": { + "description": "Gets the avatar URL for the user with the given ID, or returns a 401 error if the user is unauthenticated.", + "parameters": [ + { + "description": "The ID of the user", + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "301": { + "description": "A redirect to the user's avatar URL" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "summary": "Get the user avatar", + "tags": ["User"] + } + }, "/api/{version}/_openapi": { "get": { "description": "Get the OpenAPI spec for a specific API version", diff --git a/superset/tags/api.py b/superset/tags/api.py index ad25ffe7c93..7351a39a046 100644 --- a/superset/tags/api.py +++ b/superset/tags/api.py @@ -47,6 +47,7 @@ from superset.tags.schemas import ( openapi_spec_methods_override, TaggedObjectEntityResponseSchema, TagGetResponseSchema, + TagPostBulkResponseSchema, TagPostBulkSchema, TagPostSchema, TagPutSchema, @@ -132,6 +133,8 @@ class TagRestApi(BaseSupersetModelRestApi): openapi_spec_component_schemas = ( TagGetResponseSchema, TaggedObjectEntityResponseSchema, + TagPostBulkResponseSchema, + TagPostBulkSchema, ) apispec_parameter_schemas = { "delete_tags_schema": delete_tags_schema, @@ -211,40 +214,21 @@ class TagRestApi(BaseSupersetModelRestApi): """Bulk create tags and tagged objects --- post: - summary: Get all objects associated with a tag - parameters: - - in: path - schema: - type: integer - name: tag_id + summary: Bulk create tags and tagged objects requestBody: description: Tag schema required: true content: application/json: schema: - type: object - properties: - tags: - description: list of tag names to add to object - type: array - items: - type: string - objects_to_tag: - description: list of object names to add to object - type: array - items: - type: array + $ref: '#/components/schemas/TagPostBulkSchema' responses: 200: - description: Tag added to favorites + description: Bulk created tags and tagged objects content: application/json: schema: - type: object - properties: - result: - type: object + $ref: '#/components/schemas/TagPostBulkResponseSchema' 302: description: Redirects to the current digest 400: @@ -267,6 +251,7 @@ class TagRestApi(BaseSupersetModelRestApi): tagged_item: dict[str, Any] = self.add_model_schema.load( { "name": tag.get("name"), + "description": tag.get("description"), "objects_to_tag": tag.get("objects_to_tag"), } ) diff --git a/superset/tags/schemas.py b/superset/tags/schemas.py index 38676b42949..89a5d4f4627 100644 --- a/superset/tags/schemas.py +++ b/superset/tags/schemas.py @@ -53,21 +53,41 @@ class TaggedObjectEntityResponseSchema(Schema): changed_on = fields.DateTime() created_by = fields.Nested(UserSchema(exclude=["username"])) creator = fields.String() - tags = fields.List(fields.Nested(TagGetResponseSchema)) - owners = fields.List(fields.Nested(UserSchema)) + tags = fields.List(fields.Nested(TagGetResponseSchema())) + owners = fields.List(fields.Nested(UserSchema())) + + +objects_to_tag_field = fields.List( + fields.Tuple( + ( + fields.String(metadata={"description": "type of resource"}), + fields.Int(validate=Range(min=1), metadata={"description": "resource id"}), + ), + ), + metadata={ + "description": "Objects to tag", + }, + required=False, +) class TagObjectSchema(Schema): name = fields.String(validate=Length(min=1)) description = fields.String(required=False, allow_none=True) - objects_to_tag = fields.List( - fields.Tuple((fields.String(), fields.Int(validate=Range(min=1)))), - required=False, - ) + objects_to_tag = objects_to_tag_field class TagPostBulkSchema(Schema): - tags = fields.List(fields.Nested(TagObjectSchema)) + tags = fields.List(fields.Nested(TagObjectSchema())) + + +class TagPostBulkResponseObjectSchema(Schema): + objects_tagged = objects_to_tag_field + objects_skipped = objects_to_tag_field + + +class TagPostBulkResponseSchema(Schema): + result = fields.Nested(TagPostBulkResponseObjectSchema()) class TagPostSchema(TagObjectSchema):