diff --git a/docs/static/resources/openapi.json b/docs/static/resources/openapi.json
index 9c360c71e436576df6c76d3d494d46d3c02941e1..bb8858fb6ccf888a0cf9061676b52e23ab43e710 100644
--- a/docs/static/resources/openapi.json
+++ b/docs/static/resources/openapi.json
@@ -635,37 +635,6 @@
         },
         "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": {
@@ -677,132 +646,6 @@
         },
         "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": {
@@ -879,6 +722,14 @@
           "image_url": {
             "description": "The url to fetch the screenshot",
             "type": "string"
+          },
+          "task_status": {
+            "description": "The status of the async screenshot",
+            "type": "string"
+          },
+          "task_updated_at": {
+            "description": "The timestamp of the last change in status",
+            "type": "string"
           }
         },
         "type": "object"
@@ -1898,7 +1749,7 @@
             "type": "boolean"
           },
           "owners": {
-            "$ref": "#/components/schemas/ChartDataRestApi.get.AppleUser"
+            "$ref": "#/components/schemas/ChartDataRestApi.get.User"
           },
           "params": {
             "nullable": true,
@@ -1930,26 +1781,6 @@
         },
         "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": {
@@ -1988,6 +1819,26 @@
         },
         "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": {
@@ -2069,10 +1920,10 @@
             "type": "string"
           },
           "last_saved_by": {
-            "$ref": "#/components/schemas/ChartDataRestApi.get_list.AppleUser"
+            "$ref": "#/components/schemas/ChartDataRestApi.get_list.User2"
           },
           "owners": {
-            "$ref": "#/components/schemas/ChartDataRestApi.get_list.AppleUser1"
+            "$ref": "#/components/schemas/ChartDataRestApi.get_list.User3"
           },
           "params": {
             "nullable": true,
@@ -2098,52 +1949,17 @@
           "url": {
             "readOnly": true
           },
-          "viz_type": {
-            "maxLength": 250,
+          "uuid": {
+            "format": "uuid",
             "nullable": true,
             "type": "string"
-          }
-        },
-        "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,
+          "viz_type": {
+            "maxLength": 250,
+            "nullable": true,
             "type": "string"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
       "ChartDataRestApi.get_list.Dashboard": {
@@ -2236,6 +2052,46 @@
         ],
         "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"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          }
+        },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
+        "type": "object"
+      },
       "ChartDataRestApi.post": {
         "properties": {
           "cache_timeout": {
@@ -2718,7 +2574,7 @@
             "type": "boolean"
           },
           "owners": {
-            "$ref": "#/components/schemas/ChartRestApi.get.AppleUser"
+            "$ref": "#/components/schemas/ChartRestApi.get.User"
           },
           "params": {
             "nullable": true,
@@ -2750,31 +2606,11 @@
         },
         "type": "object"
       },
-      "ChartRestApi.get.AppleUser": {
+      "ChartRestApi.get.Dashboard": {
         "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": {
-            "maxLength": 500,
-            "nullable": true,
+          "dashboard_title": {
+            "maxLength": 500,
+            "nullable": true,
             "type": "string"
           },
           "id": {
@@ -2808,6 +2644,26 @@
         },
         "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": {
@@ -2889,10 +2745,10 @@
             "type": "string"
           },
           "last_saved_by": {
-            "$ref": "#/components/schemas/ChartRestApi.get_list.AppleUser"
+            "$ref": "#/components/schemas/ChartRestApi.get_list.User2"
           },
           "owners": {
-            "$ref": "#/components/schemas/ChartRestApi.get_list.AppleUser1"
+            "$ref": "#/components/schemas/ChartRestApi.get_list.User3"
           },
           "params": {
             "nullable": true,
@@ -2918,52 +2774,17 @@
           "url": {
             "readOnly": true
           },
-          "viz_type": {
-            "maxLength": 250,
+          "uuid": {
+            "format": "uuid",
             "nullable": true,
             "type": "string"
-          }
-        },
-        "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,
+          "viz_type": {
+            "maxLength": 250,
+            "nullable": true,
             "type": "string"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
       "ChartRestApi.get_list.Dashboard": {
@@ -3056,6 +2877,46 @@
         ],
         "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"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          }
+        },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
+        "type": "object"
+      },
       "ChartRestApi.post": {
         "properties": {
           "cache_timeout": {
@@ -3265,68 +3126,6 @@
         },
         "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": {
           "changed_by": {
@@ -3505,6 +3304,14 @@
           "image_url": {
             "description": "The url to fetch the screenshot",
             "type": "string"
+          },
+          "task_status": {
+            "description": "The status of the async screenshot",
+            "type": "string"
+          },
+          "task_updated_at": {
+            "description": "The timestamp of the last change in status",
+            "type": "string"
           }
         },
         "type": "object"
@@ -3766,6 +3573,7 @@
             "type": "array"
           },
           "thumbnail_url": {
+            "nullable": true,
             "type": "string"
           },
           "url": {
@@ -3842,10 +3650,6 @@
           "created_on_delta_humanized": {
             "readOnly": true
           },
-          "css": {
-            "nullable": true,
-            "type": "string"
-          },
           "dashboard_title": {
             "maxLength": 500,
             "nullable": true,
@@ -3857,16 +3661,8 @@
           "is_managed_externally": {
             "type": "boolean"
           },
-          "json_metadata": {
-            "nullable": true,
-            "type": "string"
-          },
           "owners": {
-            "$ref": "#/components/schemas/DashboardRestApi.get_list.AppleUser"
-          },
-          "position_json": {
-            "nullable": true,
-            "type": "string"
+            "$ref": "#/components/schemas/DashboardRestApi.get_list.User2"
           },
           "published": {
             "nullable": true,
@@ -3891,28 +3687,13 @@
           },
           "url": {
             "readOnly": true
-          }
-        },
-        "type": "object"
-      },
-      "DashboardRestApi.get_list.AppleUser": {
-        "properties": {
-          "first_name": {
-            "maxLength": 64,
-            "type": "string"
-          },
-          "id": {
-            "type": "integer"
           },
-          "last_name": {
-            "maxLength": 64,
+          "uuid": {
+            "format": "uuid",
+            "nullable": true,
             "type": "string"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
       "DashboardRestApi.get_list.Role": {
@@ -3991,6 +3772,26 @@
         ],
         "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": {
@@ -5525,7 +5326,7 @@
             "type": "string"
           },
           "changed_by": {
-            "$ref": "#/components/schemas/DatasetRestApi.get.User1"
+            "$ref": "#/components/schemas/DatasetRestApi.get.User2"
           },
           "changed_on": {
             "format": "date-time",
@@ -5542,7 +5343,7 @@
             "$ref": "#/components/schemas/DatasetRestApi.get.TableColumn"
           },
           "created_by": {
-            "$ref": "#/components/schemas/DatasetRestApi.get.User"
+            "$ref": "#/components/schemas/DatasetRestApi.get.User1"
           },
           "created_on": {
             "format": "date-time",
@@ -5581,6 +5382,9 @@
             "nullable": true,
             "type": "boolean"
           },
+          "folders": {
+            "nullable": true
+          },
           "granularity_sqla": {
             "readOnly": true
           },
@@ -5620,7 +5424,7 @@
             "readOnly": true
           },
           "owners": {
-            "$ref": "#/components/schemas/DatasetRestApi.get.AppleUser"
+            "$ref": "#/components/schemas/DatasetRestApi.get.User"
           },
           "schema": {
             "maxLength": 255,
@@ -5663,36 +5467,16 @@
         ],
         "type": "object"
       },
-      "DatasetRestApi.get.AppleUser": {
+      "DatasetRestApi.get.Database": {
         "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
-          },
-          "database_name": {
-            "maxLength": 250,
+          "allow_multi_catalog": {
+            "readOnly": true
+          },
+          "backend": {
+            "readOnly": true
+          },
+          "database_name": {
+            "maxLength": 250,
             "type": "string"
           },
           "id": {
@@ -5717,9 +5501,7 @@
             "type": "string"
           },
           "currency": {
-            "maxLength": 128,
-            "nullable": true,
-            "type": "string"
+            "nullable": true
           },
           "d3format": {
             "maxLength": 128,
@@ -5749,6 +5531,11 @@
             "nullable": true,
             "type": "string"
           },
+          "uuid": {
+            "format": "uuid",
+            "nullable": true,
+            "type": "string"
+          },
           "verbose_name": {
             "maxLength": 1024,
             "nullable": true,
@@ -5851,6 +5638,9 @@
             "maxLength": 64,
             "type": "string"
           },
+          "id": {
+            "type": "integer"
+          },
           "last_name": {
             "maxLength": 64,
             "type": "string"
@@ -5879,6 +5669,23 @@
         ],
         "type": "object"
       },
+      "DatasetRestApi.get.User2": {
+        "properties": {
+          "first_name": {
+            "maxLength": 64,
+            "type": "string"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          }
+        },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
+        "type": "object"
+      },
       "DatasetRestApi.get_list": {
         "properties": {
           "catalog": {
@@ -5926,7 +5733,7 @@
             "readOnly": true
           },
           "owners": {
-            "$ref": "#/components/schemas/DatasetRestApi.get_list.AppleUser"
+            "$ref": "#/components/schemas/DatasetRestApi.get_list.User1"
           },
           "schema": {
             "maxLength": 255,
@@ -5940,6 +5747,11 @@
           "table_name": {
             "maxLength": 250,
             "type": "string"
+          },
+          "uuid": {
+            "format": "uuid",
+            "nullable": true,
+            "type": "string"
           }
         },
         "required": [
@@ -5948,42 +5760,42 @@
         ],
         "type": "object"
       },
-      "DatasetRestApi.get_list.AppleUser": {
+      "DatasetRestApi.get_list.Database": {
         "properties": {
-          "first_name": {
-            "maxLength": 64,
+          "database_name": {
+            "maxLength": 250,
             "type": "string"
           },
           "id": {
             "type": "integer"
-          },
-          "last_name": {
-            "maxLength": 64,
-            "type": "string"
           }
         },
         "required": [
-          "first_name",
-          "last_name"
+          "database_name"
         ],
         "type": "object"
       },
-      "DatasetRestApi.get_list.Database": {
+      "DatasetRestApi.get_list.User": {
         "properties": {
-          "database_name": {
-            "maxLength": 250,
+          "first_name": {
+            "maxLength": 64,
             "type": "string"
           },
           "id": {
             "type": "integer"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
         "required": [
-          "database_name"
+          "first_name",
+          "last_name"
         ],
         "type": "object"
       },
-      "DatasetRestApi.get_list.User": {
+      "DatasetRestApi.get_list.User1": {
         "properties": {
           "first_name": {
             "maxLength": 64,
@@ -6109,6 +5921,12 @@
             "nullable": true,
             "type": "boolean"
           },
+          "folders": {
+            "items": {
+              "$ref": "#/components/schemas/Folder"
+            },
+            "type": "array"
+          },
           "is_managed_externally": {
             "nullable": true,
             "type": "boolean"
@@ -6350,112 +6168,6 @@
         ],
         "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": {
@@ -6563,6 +6275,44 @@
         ],
         "type": "object"
       },
+      "Folder": {
+        "properties": {
+          "children": {
+            "items": {
+              "$ref": "#/components/schemas/Folder"
+            },
+            "nullable": true,
+            "type": "array"
+          },
+          "description": {
+            "maxLength": 1000,
+            "minLength": 0,
+            "nullable": true,
+            "type": "string"
+          },
+          "name": {
+            "maxLength": 250,
+            "minLength": 1,
+            "type": "string"
+          },
+          "type": {
+            "enum": [
+              "metric",
+              "column",
+              "folder"
+            ],
+            "type": "string"
+          },
+          "uuid": {
+            "format": "uuid",
+            "type": "string"
+          }
+        },
+        "required": [
+          "uuid"
+        ],
+        "type": "object"
+      },
       "FormDataPostSchema": {
         "properties": {
           "chart_id": {
@@ -6708,176 +6458,56 @@
         ],
         "type": "object"
       },
-      "IASLoginTokenRequestSchema": {
+      "ImportV1Database": {
         "properties": {
-          "access_token": {
-            "description": "IAS Access token. Can be requested by adding `token` to the `responseTypes`.",
+          "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"
           },
-          "client_id": {
-            "description": "IAS client id. Only needed if `refresh_token` is provided.",
+          "encrypted_extra": {
             "nullable": true,
             "type": "string"
           },
-          "client_secret": {
-            "description": "IAS client secret. Only needed if `refresh_token` and `client_id` is provided.",
+          "expose_in_sqllab": {
+            "type": "boolean"
+          },
+          "external_url": {
             "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"
+          "extra": {
+            "$ref": "#/components/schemas/ImportV1DatabaseExtra"
+          },
+          "impersonate_user": {
+            "type": "boolean"
           },
-          "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.",
+          "is_managed_externally": {
+            "nullable": true,
+            "type": "boolean"
+          },
+          "password": {
             "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": {
+          "sqlalchemy_uri": {
             "type": "string"
           },
           "ssh_tunnel": {
@@ -6938,6 +6568,10 @@
             "additionalProperties": {},
             "type": "object"
           },
+          "schema_options": {
+            "additionalProperties": {},
+            "type": "object"
+          },
           "schemas_allowed_for_csv_upload": {
             "items": {
               "type": "string"
@@ -6951,446 +6585,298 @@
         },
         "type": "object"
       },
-      "LakehouseCatalog": {
+      "LogRestApi.get": {
         "properties": {
-          "database_id": {
-            "description": "The numerical id of the database",
+          "action": {
+            "maxLength": 512,
+            "nullable": true,
+            "type": "string"
+          },
+          "dashboard_id": {
+            "nullable": true,
             "type": "integer"
           },
-          "database_name": {
-            "description": "The name of the database",
+          "dttm": {
+            "format": "date-time",
+            "nullable": true,
             "type": "string"
           },
-          "id": {
-            "description": "The numerical id of the catalog",
+          "duration_ms": {
+            "nullable": true,
             "type": "integer"
           },
-          "name": {
-            "description": "The name of the catalog",
+          "json": {
+            "nullable": true,
             "type": "string"
           },
-          "sqlalchemy_uri": {
-            "description": "The SQLAlchemy URI",
+          "referrer": {
+            "maxLength": 1024,
+            "nullable": true,
+            "type": "string"
+          },
+          "slice_id": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "user": {
+            "$ref": "#/components/schemas/LogRestApi.get.User"
+          },
+          "user_id": {
+            "nullable": true,
+            "type": "integer"
+          }
+        },
+        "type": "object"
+      },
+      "LogRestApi.get.User": {
+        "properties": {
+          "username": {
+            "maxLength": 64,
             "type": "string"
           }
         },
+        "required": [
+          "username"
+        ],
         "type": "object"
       },
-      "LakehouseConnectRequestSchema": {
+      "LogRestApi.get_list": {
         "properties": {
-          "catalogs": {
-            "description": "A list of catalogs to connect to. If empty or undefined, connect all available catalogs.",
-            "example": [
-              "my_catalog"
-            ],
-            "items": {
-              "type": "string"
-            },
+          "action": {
+            "maxLength": 512,
             "nullable": true,
-            "type": "array"
+            "type": "string"
           },
-          "database_names": {
-            "description": "Custom catalog-database name mappings. If undefined, the default naming convention will be used",
-            "example": {
-              "my_catalog": "my_database"
-            },
+          "dashboard_id": {
             "nullable": true,
-            "type": "object"
-          },
-          "dry_run": {
-            "description": "Should the task be executed in dry run mode. Useful for testing.",
-            "example": false,
-            "type": "boolean"
+            "type": "integer"
           },
-          "engine_type": {
-            "description": "The type of the engine (only trino is currently supported)",
-            "enum": [
-              "trino"
-            ],
-            "example": "trino",
+          "dttm": {
+            "format": "date-time",
+            "nullable": true,
             "type": "string"
           },
-          "engine_url": {
-            "description": "The URL to the engine",
-            "example": "https://myengine.corp.apple.com",
-            "type": "string"
+          "duration_ms": {
+            "nullable": true,
+            "type": "integer"
           },
-          "environment": {
-            "description": "Prod or Int",
-            "enum": [
-              "int",
-              "prod"
-            ],
-            "example": "int",
+          "json": {
+            "nullable": true,
             "type": "string"
           },
-          "name": {
-            "description": "The name of the Lakehouse (subject to change over time). If left undefined, use lakehouse id",
-            "example": "My Lakehouse",
+          "referrer": {
+            "maxLength": 1024,
             "nullable": true,
             "type": "string"
           },
-          "superset_url": {
-            "description": "The URL of the Superset instance connecting to",
-            "example": "http://localhost:8088",
+          "slice_id": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "user": {
+            "$ref": "#/components/schemas/LogRestApi.get_list.User"
+          },
+          "user_id": {
+            "nullable": true,
+            "type": "integer"
+          }
+        },
+        "type": "object"
+      },
+      "LogRestApi.get_list.User": {
+        "properties": {
+          "username": {
+            "maxLength": 64,
             "type": "string"
           }
         },
         "required": [
-          "engine_type",
-          "engine_url",
-          "environment",
-          "superset_url"
+          "username"
         ],
         "type": "object"
       },
-      "LakehouseConnectResponseSchema": {
+      "LogRestApi.post": {
         "properties": {
-          "task_id": {
-            "description": "The id of the connection task",
-            "type": "string"
+          "id": {
+            "type": "integer"
           }
         },
         "type": "object"
       },
-      "LakehouseConnectResultResponseSchema": {
+      "LogRestApi.put": {
         "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"
+          "action": {
+            "maxLength": 512,
+            "nullable": true,
+            "type": "string"
           },
-          "lakehouse": {
-            "allOf": [
-              {
-                "$ref": "#/components/schemas/LakehouseGetResponseSchema"
-              }
-            ],
-            "description": "The connected Lakehouse",
-            "nullable": true
+          "dttm": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
           },
-          "message": {
-            "description": "A message to provide additional context on what has happened",
+          "json": {
+            "nullable": true,
             "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"
+          "user": {
+            "nullable": true
+          }
+        },
+        "type": "object"
+      },
+      "PermissionApi.get": {
+        "properties": {
+          "id": {
+            "type": "integer"
           },
-          "status": {
-            "description": "The status of the task",
-            "enum": [
-              "scheduled",
-              "running",
-              "completed",
-              "failed",
-              "reconnect_failed",
-              "cancelled"
-            ],
+          "name": {
+            "maxLength": 100,
             "type": "string"
           }
         },
         "required": [
-          "lakehouse"
+          "name"
         ],
         "type": "object"
       },
-      "LakehouseConnectStatusResponseSchema": {
+      "PermissionApi.get_list": {
         "properties": {
-          "message": {
-            "description": "A message to provide additional context on what has happened",
-            "type": "string"
+          "id": {
+            "type": "integer"
           },
-          "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",
+            "maxLength": 100,
             "type": "string"
           }
         },
         "required": [
-          "name",
-          "sql"
+          "name"
         ],
         "type": "object"
       },
-      "LakehouseDatasetRequestSchema": {
+      "PermissionApi.post": {
         "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",
+            "maxLength": 100,
             "type": "string"
           }
         },
         "required": [
-          "name",
-          "sql"
+          "name"
         ],
         "type": "object"
       },
-      "LakehouseDatasetResponseSchema": {
+      "PermissionApi.put": {
         "properties": {
-          "url": {
-            "description": "The url for exploring the virtual dataset",
+          "name": {
+            "maxLength": 100,
             "type": "string"
           }
         },
         "required": [
-          "url"
+          "name"
         ],
         "type": "object"
       },
-      "LakehouseDisconnectResponseSchema": {
+      "PermissionViewMenuApi.get": {
         "properties": {
-          "lakehouse": {
-            "allOf": [
-              {
-                "$ref": "#/components/schemas/LakehouseGetResponseSchema"
-              }
-            ],
-            "description": "A list of disconnected lakehouses"
+          "id": {
+            "type": "integer"
+          },
+          "permission": {
+            "$ref": "#/components/schemas/PermissionViewMenuApi.get.Permission"
+          },
+          "view_menu": {
+            "$ref": "#/components/schemas/PermissionViewMenuApi.get.ViewMenu"
           }
         },
         "type": "object"
       },
-      "LakehouseGetListResponseSchema": {
+      "PermissionViewMenuApi.get.Permission": {
         "properties": {
-          "lakehouses": {
-            "description": "A list of connected lakehouses",
-            "items": {
-              "$ref": "#/components/schemas/LakehouseGetResponseSchema"
-            },
-            "type": "array"
+          "name": {
+            "maxLength": 100,
+            "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "LakehouseGetResponseSchema": {
+      "PermissionViewMenuApi.get.ViewMenu": {
         "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",
+            "maxLength": 250,
             "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "LogRestApi.get": {
+      "PermissionViewMenuApi.get_list": {
         "properties": {
-          "action": {
-            "maxLength": 512,
-            "nullable": true,
-            "type": "string"
-          },
-          "dashboard_id": {
-            "nullable": true,
-            "type": "integer"
-          },
-          "dttm": {
-            "format": "date-time",
-            "nullable": true,
-            "type": "string"
-          },
-          "duration_ms": {
-            "nullable": true,
-            "type": "integer"
-          },
-          "json": {
-            "nullable": true,
-            "type": "string"
-          },
-          "referrer": {
-            "maxLength": 1024,
-            "nullable": true,
-            "type": "string"
-          },
-          "slice_id": {
-            "nullable": true,
+          "id": {
             "type": "integer"
           },
-          "user": {
-            "$ref": "#/components/schemas/LogRestApi.get.AppleUser"
+          "permission": {
+            "$ref": "#/components/schemas/PermissionViewMenuApi.get_list.Permission"
           },
-          "user_id": {
-            "nullable": true,
-            "type": "integer"
+          "view_menu": {
+            "$ref": "#/components/schemas/PermissionViewMenuApi.get_list.ViewMenu"
           }
         },
         "type": "object"
       },
-      "LogRestApi.get.AppleUser": {
+      "PermissionViewMenuApi.get_list.Permission": {
         "properties": {
-          "username": {
-            "maxLength": 64,
+          "name": {
+            "maxLength": 100,
             "type": "string"
           }
         },
         "required": [
-          "username"
+          "name"
         ],
         "type": "object"
       },
-      "LogRestApi.get_list": {
-        "properties": {
-          "action": {
-            "maxLength": 512,
-            "nullable": true,
-            "type": "string"
-          },
-          "dashboard_id": {
-            "nullable": true,
-            "type": "integer"
-          },
-          "dttm": {
-            "format": "date-time",
-            "nullable": true,
-            "type": "string"
-          },
-          "duration_ms": {
-            "nullable": true,
-            "type": "integer"
-          },
-          "json": {
-            "nullable": true,
-            "type": "string"
-          },
-          "referrer": {
-            "maxLength": 1024,
-            "nullable": true,
-            "type": "string"
-          },
-          "slice_id": {
-            "nullable": true,
-            "type": "integer"
-          },
-          "user": {
-            "$ref": "#/components/schemas/LogRestApi.get_list.AppleUser"
-          },
-          "user_id": {
-            "nullable": true,
-            "type": "integer"
-          }
-        },
-        "type": "object"
-      },
-      "LogRestApi.get_list.AppleUser": {
+      "PermissionViewMenuApi.get_list.ViewMenu": {
         "properties": {
-          "username": {
-            "maxLength": 64,
+          "name": {
+            "maxLength": 250,
             "type": "string"
           }
         },
         "required": [
-          "username"
+          "name"
         ],
         "type": "object"
       },
-      "LogRestApi.post": {
+      "PermissionViewMenuApi.post": {
         "properties": {
-          "id": {
+          "permission_id": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "view_menu_id": {
+            "nullable": true,
             "type": "integer"
           }
         },
         "type": "object"
       },
-      "LogRestApi.put": {
+      "PermissionViewMenuApi.put": {
         "properties": {
-          "action": {
-            "maxLength": 512,
-            "nullable": true,
-            "type": "string"
-          },
-          "dttm": {
-            "format": "date-time",
+          "permission_id": {
             "nullable": true,
-            "type": "string"
+            "type": "integer"
           },
-          "json": {
+          "view_menu_id": {
             "nullable": true,
-            "type": "string"
-          },
-          "user": {
-            "nullable": true
+            "type": "integer"
           }
         },
         "type": "object"
@@ -8239,7 +7725,7 @@
             "type": "string"
           },
           "owners": {
-            "$ref": "#/components/schemas/ReportScheduleRestApi.get.AppleUser"
+            "$ref": "#/components/schemas/ReportScheduleRestApi.get.User"
           },
           "recipients": {
             "$ref": "#/components/schemas/ReportScheduleRestApi.get.ReportRecipients"
@@ -8283,26 +7769,6 @@
         ],
         "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": {
@@ -8368,6 +7834,26 @@
         },
         "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": {
@@ -8438,7 +7924,7 @@
             "type": "string"
           },
           "owners": {
-            "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.AppleUser"
+            "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User2"
           },
           "recipients": {
             "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.ReportRecipients"
@@ -8460,26 +7946,6 @@
         ],
         "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": {
@@ -8529,13 +7995,33 @@
         ],
         "type": "object"
       },
-      "ReportScheduleRestApi.post": {
+      "ReportScheduleRestApi.get_list.User2": {
         "properties": {
-          "active": {
-            "type": "boolean"
+          "first_name": {
+            "maxLength": 64,
+            "type": "string"
           },
-          "chart": {
-            "nullable": true,
+          "id": {
+            "type": "integer"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          }
+        },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
+        "type": "object"
+      },
+      "ReportScheduleRestApi.post": {
+        "properties": {
+          "active": {
+            "type": "boolean"
+          },
+          "chart": {
+            "nullable": true,
             "type": "integer"
           },
           "context_markdown": {
@@ -10046,6 +9532,73 @@
         ],
         "type": "object"
       },
+      "RolePermissionListSchema": {
+        "properties": {
+          "id": {
+            "type": "integer"
+          },
+          "permission_name": {
+            "type": "string"
+          },
+          "view_menu_name": {
+            "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "RolePermissionPostSchema": {
+        "properties": {
+          "permission_view_menu_ids": {
+            "description": "List of permission view menu id",
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "permission_view_menu_ids"
+        ],
+        "type": "object"
+      },
+      "RoleResponseSchema": {
+        "properties": {
+          "id": {
+            "type": "integer"
+          },
+          "name": {
+            "type": "string"
+          },
+          "permission_ids": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          },
+          "user_ids": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "RoleUserPutSchema": {
+        "properties": {
+          "user_ids": {
+            "description": "List of user ids",
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "user_ids"
+        ],
+        "type": "object"
+      },
       "Roles": {
         "properties": {
           "id": {
@@ -10068,6 +9621,26 @@
         },
         "type": "object"
       },
+      "RolesResponseSchema": {
+        "properties": {
+          "count": {
+            "type": "integer"
+          },
+          "ids": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          },
+          "result": {
+            "items": {
+              "$ref": "#/components/schemas/RoleResponseSchema"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
       "SQLLabBootstrapSchema": {
         "properties": {
           "active_tab": {
@@ -10531,1185 +10104,2080 @@
         },
         "type": "object"
       },
-      "StopQuerySchema": {
-        "properties": {
-          "client_id": {
-            "type": "string"
-          }
-        },
-        "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": {
+      "SqlLabPermalinkSchema": {
         "properties": {
-          "active": {
-            "type": "boolean"
-          },
           "autorun": {
             "type": "boolean"
           },
-          "database_id": {
-            "type": "integer"
-          },
-          "extra_json": {
-            "type": "object"
-          },
-          "hide_left_bar": {
-            "type": "boolean"
-          },
-          "id": {
-            "type": "string"
-          },
-          "label": {
+          "catalog": {
+            "description": "The catalog name of the query",
+            "nullable": true,
             "type": "string"
           },
-          "latest_query": {
-            "$ref": "#/components/schemas/QueryResult"
-          },
-          "query_limit": {
+          "dbId": {
+            "description": "The id of the database",
             "type": "integer"
           },
-          "saved_query": {
-            "nullable": true,
-            "type": "object"
+          "name": {
+            "description": "The label of the editor tab",
+            "type": "string"
           },
           "schema": {
+            "description": "The schema name of the query",
+            "nullable": true,
             "type": "string"
           },
           "sql": {
+            "description": "SQL query text",
             "type": "string"
           },
-          "table_schemas": {
-            "items": {
-              "$ref": "#/components/schemas/Table"
-            },
-            "type": "array"
-          },
-          "user_id": {
-            "type": "integer"
+          "templateParams": {
+            "description": "stringfied JSON string for template parameters",
+            "nullable": true,
+            "type": "string"
           }
         },
+        "required": [
+          "dbId",
+          "name",
+          "sql"
+        ],
         "type": "object"
       },
-      "Table": {
+      "StopQuerySchema": {
         "properties": {
-          "database_id": {
-            "type": "integer"
-          },
-          "description": {
+          "client_id": {
             "type": "string"
-          },
-          "expanded": {
-            "type": "boolean"
-          },
+          }
+        },
+        "type": "object"
+      },
+      "SupersetRoleApi.get": {
+        "properties": {
           "id": {
             "type": "integer"
           },
-          "schema": {
+          "name": {
+            "maxLength": 64,
             "type": "string"
-          },
-          "tab_state_id": {
+          }
+        },
+        "required": [
+          "name"
+        ],
+        "type": "object"
+      },
+      "SupersetRoleApi.get_list": {
+        "properties": {
+          "id": {
             "type": "integer"
           },
-          "table": {
+          "name": {
+            "maxLength": 64,
             "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "TableExtraMetadataResponseSchema": {
+      "SupersetRoleApi.post": {
         "properties": {
-          "clustering": {
-            "type": "object"
-          },
-          "metadata": {
-            "type": "object"
-          },
-          "partitions": {
-            "type": "object"
+          "name": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "TableMetadataColumnsResponse": {
+      "SupersetRoleApi.put": {
         "properties": {
-          "duplicates_constraint": {
-            "type": "string"
-          },
-          "keys": {
-            "description": "",
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
-          },
-          "longType": {
-            "description": "The actual backend long type for the column",
-            "type": "string"
-          },
           "name": {
-            "description": "The column name",
-            "type": "string"
-          },
-          "type": {
-            "description": "The column type",
+            "maxLength": 64,
             "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "TableMetadataForeignKeysIndexesResponse": {
+      "SupersetUserApi.get": {
         "properties": {
-          "column_names": {
-            "items": {
-              "description": "A list of column names that compose the foreign key or  index",
-              "type": "string"
-            },
-            "type": "array"
+          "active": {
+            "nullable": true,
+            "type": "boolean"
           },
-          "name": {
-            "description": "The name of the foreign key or index",
-            "type": "string"
+          "changed_by": {
+            "$ref": "#/components/schemas/SupersetUserApi.get.User1"
           },
-          "options": {
-            "$ref": "#/components/schemas/TableMetadataOptionsResponse"
+          "changed_on": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
           },
-          "referred_columns": {
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
+          "created_by": {
+            "$ref": "#/components/schemas/SupersetUserApi.get.User"
           },
-          "referred_schema": {
+          "created_on": {
+            "format": "date-time",
+            "nullable": true,
             "type": "string"
           },
-          "referred_table": {
+          "email": {
+            "maxLength": 320,
             "type": "string"
           },
-          "type": {
+          "fail_login_count": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "first_name": {
+            "maxLength": 64,
             "type": "string"
-          }
-        },
-        "type": "object"
-      },
-      "TableMetadataOptionsResponse": {
-        "properties": {
-          "deferrable": {
-            "type": "boolean"
           },
-          "initially": {
-            "type": "boolean"
+          "id": {
+            "type": "integer"
           },
-          "match": {
-            "type": "boolean"
+          "last_login": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
           },
-          "ondelete": {
-            "type": "boolean"
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
           },
-          "onupdate": {
-            "type": "boolean"
-          }
-        },
-        "type": "object"
-      },
-      "TableMetadataPrimaryKeyResponse": {
-        "properties": {
-          "column_names": {
-            "items": {
-              "description": "A list of column names that compose the primary key",
-              "type": "string"
-            },
-            "type": "array"
+          "login_count": {
+            "nullable": true,
+            "type": "integer"
           },
-          "name": {
-            "description": "The primary key index name",
-            "type": "string"
+          "roles": {
+            "$ref": "#/components/schemas/SupersetUserApi.get.Role"
           },
-          "type": {
+          "username": {
+            "maxLength": 64,
             "type": "string"
           }
         },
+        "required": [
+          "email",
+          "first_name",
+          "last_name",
+          "username"
+        ],
         "type": "object"
       },
-      "TableMetadataResponseSchema": {
+      "SupersetUserApi.get.Role": {
         "properties": {
-          "columns": {
-            "description": "A list of columns and their metadata",
-            "items": {
-              "$ref": "#/components/schemas/TableMetadataColumnsResponse"
-            },
-            "type": "array"
-          },
-          "foreignKeys": {
-            "description": "A list of foreign keys and their metadata",
-            "items": {
-              "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse"
-            },
-            "type": "array"
-          },
-          "indexes": {
-            "description": "A list of indexes and their metadata",
-            "items": {
-              "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse"
-            },
-            "type": "array"
+          "id": {
+            "type": "integer"
           },
           "name": {
-            "description": "The name of the table",
-            "type": "string"
-          },
-          "primaryKey": {
-            "allOf": [
-              {
-                "$ref": "#/components/schemas/TableMetadataPrimaryKeyResponse"
-              }
-            ],
-            "description": "Primary keys metadata"
-          },
-          "selectStar": {
-            "description": "SQL select star",
+            "maxLength": 64,
             "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "Tables": {
+      "SupersetUserApi.get.User": {
         "properties": {
           "id": {
             "type": "integer"
-          },
-          "schema": {
-            "type": "string"
-          },
-          "table_name": {
-            "type": "string"
           }
         },
         "type": "object"
       },
-      "TabsPayloadSchema": {
+      "SupersetUserApi.get.User1": {
         "properties": {
-          "all_tabs": {
-            "additionalProperties": {
-              "type": "string"
-            },
-            "type": "object"
-          },
-          "tab_tree": {
-            "items": {
-              "$ref": "#/components/schemas/Tab"
-            },
-            "type": "array"
+          "id": {
+            "type": "integer"
           }
         },
         "type": "object"
       },
-      "Tag": {
+      "SupersetUserApi.get_list": {
         "properties": {
-          "id": {
+          "active": {
+            "nullable": true,
+            "type": "boolean"
+          },
+          "changed_by": {
+            "$ref": "#/components/schemas/SupersetUserApi.get_list.User1"
+          },
+          "changed_on": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
+          },
+          "created_by": {
+            "$ref": "#/components/schemas/SupersetUserApi.get_list.User"
+          },
+          "created_on": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
+          },
+          "email": {
+            "maxLength": 320,
+            "type": "string"
+          },
+          "fail_login_count": {
+            "nullable": true,
             "type": "integer"
           },
-          "name": {
+          "first_name": {
+            "maxLength": 64,
             "type": "string"
           },
-          "type": {
-            "enum": [
-              1,
-              2,
-              3,
-              4
-            ]
-          }
-        },
-        "type": "object"
-      },
-      "TagGetResponseSchema": {
-        "properties": {
           "id": {
             "type": "integer"
           },
-          "name": {
+          "last_login": {
+            "format": "date-time",
+            "nullable": true,
             "type": "string"
           },
-          "type": {
+          "last_name": {
+            "maxLength": 64,
             "type": "string"
-          }
-        },
-        "type": "object"
-      },
-      "TagObject": {
-        "properties": {
-          "description": {
+          },
+          "login_count": {
             "nullable": true,
-            "type": "string"
+            "type": "integer"
           },
-          "name": {
-            "minLength": 1,
-            "type": "string"
+          "roles": {
+            "$ref": "#/components/schemas/SupersetUserApi.get_list.Role"
           },
-          "objects_to_tag": {
-            "description": "Objects to tag",
-            "items": {},
-            "type": "array"
+          "username": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
+        "required": [
+          "email",
+          "first_name",
+          "last_name",
+          "username"
+        ],
         "type": "object"
       },
-      "TagPostBulkResponseObject": {
+      "SupersetUserApi.get_list.Role": {
         "properties": {
-          "objects_skipped": {
-            "description": "Objects to tag",
-            "items": {},
-            "type": "array"
+          "id": {
+            "type": "integer"
           },
-          "objects_tagged": {
-            "description": "Objects to tag",
-            "items": {},
-            "type": "array"
+          "name": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
+        "required": [
+          "name"
+        ],
         "type": "object"
       },
-      "TagPostBulkResponseSchema": {
+      "SupersetUserApi.get_list.User": {
         "properties": {
-          "result": {
-            "$ref": "#/components/schemas/TagPostBulkResponseObject"
+          "id": {
+            "type": "integer"
           }
         },
         "type": "object"
       },
-      "TagPostBulkSchema": {
+      "SupersetUserApi.get_list.User1": {
         "properties": {
-          "tags": {
-            "items": {
-              "$ref": "#/components/schemas/TagObject"
-            },
-            "type": "array"
+          "id": {
+            "type": "integer"
           }
         },
         "type": "object"
       },
-      "TagRestApi.get": {
+      "SupersetUserApi.post": {
         "properties": {
-          "changed_by": {
-            "$ref": "#/components/schemas/TagRestApi.get.User"
+          "active": {
+            "description": "Is user active?It's not a good policy to remove a user, just make it inactive",
+            "type": "boolean"
           },
-          "changed_on_delta_humanized": {
-            "readOnly": true
+          "email": {
+            "description": "The user's email",
+            "type": "string"
           },
-          "created_by": {
-            "$ref": "#/components/schemas/TagRestApi.get.User1"
+          "first_name": {
+            "description": "The user's first name",
+            "type": "string"
           },
-          "created_on_delta_humanized": {
-            "readOnly": true
+          "last_name": {
+            "description": "The user's last name",
+            "type": "string"
           },
-          "description": {
-            "nullable": true,
+          "password": {
+            "description": "The user's password for authentication",
             "type": "string"
           },
-          "id": {
-            "type": "integer"
+          "roles": {
+            "description": "The user's roles",
+            "items": {
+              "type": "integer"
+            },
+            "minItems": 1,
+            "type": "array"
           },
-          "name": {
+          "username": {
+            "description": "The user's username",
             "maxLength": 250,
-            "nullable": true,
+            "minLength": 1,
             "type": "string"
-          },
-          "type": {
-            "enum": [
-              1,
-              2,
-              3,
-              4
-            ]
           }
         },
+        "required": [
+          "email",
+          "first_name",
+          "last_name",
+          "password",
+          "roles",
+          "username"
+        ],
         "type": "object"
       },
-      "TagRestApi.get.User": {
+      "SupersetUserApi.put": {
         "properties": {
+          "active": {
+            "description": "Is user active?It's not a good policy to remove a user, just make it inactive",
+            "type": "boolean"
+          },
+          "email": {
+            "description": "The user's email",
+            "type": "string"
+          },
           "first_name": {
-            "maxLength": 64,
+            "description": "The user's first name",
             "type": "string"
           },
           "last_name": {
-            "maxLength": 64,
+            "description": "The user's last name",
+            "type": "string"
+          },
+          "password": {
+            "description": "The user's password for authentication",
+            "type": "string"
+          },
+          "roles": {
+            "description": "The user's roles",
+            "items": {
+              "type": "integer"
+            },
+            "minItems": 1,
+            "type": "array"
+          },
+          "username": {
+            "description": "The user's username",
+            "maxLength": 250,
+            "minLength": 1,
             "type": "string"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
-      "TagRestApi.get.User1": {
+      "Tab": {
         "properties": {
-          "active": {
-            "nullable": true,
-            "type": "boolean"
+          "children": {
+            "items": {
+              "$ref": "#/components/schemas/Tab"
+            },
+            "type": "array"
           },
-          "changed_on": {
-            "format": "date-time",
-            "nullable": true,
-            "type": "string"
+          "parents": {
+            "items": {
+              "type": "string"
+            },
+            "type": "array"
           },
-          "created_on": {
-            "format": "date-time",
-            "nullable": true,
+          "title": {
             "type": "string"
           },
-          "email": {
-            "maxLength": 320,
+          "value": {
             "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "TabState": {
+        "properties": {
+          "active": {
+            "type": "boolean"
           },
-          "fail_login_count": {
-            "nullable": true,
+          "autorun": {
+            "type": "boolean"
+          },
+          "database_id": {
             "type": "integer"
           },
-          "first_name": {
-            "maxLength": 64,
-            "type": "string"
+          "extra_json": {
+            "type": "object"
           },
-          "id": {
-            "type": "integer"
+          "hide_left_bar": {
+            "type": "boolean"
           },
-          "last_login": {
-            "format": "date-time",
-            "nullable": true,
+          "id": {
             "type": "string"
           },
-          "last_name": {
-            "maxLength": 64,
+          "label": {
             "type": "string"
           },
-          "login_count": {
-            "nullable": true,
+          "latest_query": {
+            "$ref": "#/components/schemas/QueryResult"
+          },
+          "query_limit": {
             "type": "integer"
           },
-          "password": {
-            "maxLength": 256,
+          "saved_query": {
             "nullable": true,
+            "type": "object"
+          },
+          "schema": {
             "type": "string"
           },
-          "username": {
-            "maxLength": 64,
+          "sql": {
             "type": "string"
+          },
+          "table_schemas": {
+            "items": {
+              "$ref": "#/components/schemas/Table"
+            },
+            "type": "array"
+          },
+          "user_id": {
+            "type": "integer"
           }
         },
-        "required": [
-          "email",
-          "first_name",
-          "last_name",
-          "username"
-        ],
         "type": "object"
       },
-      "TagRestApi.get_list": {
+      "Table": {
         "properties": {
-          "changed_by": {
-            "$ref": "#/components/schemas/TagRestApi.get_list.User"
-          },
-          "changed_on_delta_humanized": {
-            "readOnly": true
-          },
-          "created_by": {
-            "$ref": "#/components/schemas/TagRestApi.get_list.User1"
-          },
-          "created_on_delta_humanized": {
-            "readOnly": true
+          "database_id": {
+            "type": "integer"
           },
           "description": {
-            "nullable": true,
             "type": "string"
           },
+          "expanded": {
+            "type": "boolean"
+          },
           "id": {
             "type": "integer"
           },
-          "name": {
-            "maxLength": 250,
-            "nullable": true,
+          "schema": {
             "type": "string"
           },
-          "type": {
-            "enum": [
-              1,
-              2,
-              3,
-              4
-            ]
-          }
-        },
-        "type": "object"
-      },
-      "TagRestApi.get_list.User": {
-        "properties": {
-          "first_name": {
-            "maxLength": 64,
-            "type": "string"
+          "tab_state_id": {
+            "type": "integer"
           },
-          "last_name": {
-            "maxLength": 64,
+          "table": {
             "type": "string"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
-      "TagRestApi.get_list.User1": {
+      "TableExtraMetadataResponseSchema": {
         "properties": {
-          "first_name": {
-            "maxLength": 64,
-            "type": "string"
+          "clustering": {
+            "type": "object"
           },
-          "last_name": {
-            "maxLength": 64,
-            "type": "string"
+          "metadata": {
+            "type": "object"
+          },
+          "partitions": {
+            "type": "object"
           }
         },
-        "required": [
-          "first_name",
-          "last_name"
-        ],
         "type": "object"
       },
-      "TagRestApi.post": {
+      "TableMetadataColumnsResponse": {
         "properties": {
-          "description": {
-            "nullable": true,
-            "type": "string"
-          },
-          "name": {
-            "minLength": 1,
+          "duplicates_constraint": {
             "type": "string"
           },
-          "objects_to_tag": {
-            "description": "Objects to tag",
-            "items": {},
+          "keys": {
+            "description": "",
+            "items": {
+              "type": "string"
+            },
             "type": "array"
-          }
-        },
-        "type": "object"
-      },
-      "TagRestApi.put": {
-        "properties": {
-          "description": {
-            "nullable": true,
+          },
+          "longType": {
+            "description": "The actual backend long type for the column",
             "type": "string"
           },
           "name": {
-            "minLength": 1,
+            "description": "The column name",
             "type": "string"
           },
-          "objects_to_tag": {
-            "description": "Objects to tag",
-            "items": {},
-            "type": "array"
+          "type": {
+            "description": "The column type",
+            "type": "string"
           }
         },
         "type": "object"
       },
-      "TaggedObjectEntityResponseSchema": {
+      "TableMetadataForeignKeysIndexesResponse": {
         "properties": {
-          "changed_on": {
-            "format": "date-time",
-            "type": "string"
-          },
-          "created_by": {
-            "$ref": "#/components/schemas/User"
-          },
-          "creator": {
-            "type": "string"
-          },
-          "id": {
-            "type": "integer"
+          "column_names": {
+            "items": {
+              "description": "A list of column names that compose the foreign key or  index",
+              "type": "string"
+            },
+            "type": "array"
           },
           "name": {
+            "description": "The name of the foreign key or index",
             "type": "string"
           },
-          "owners": {
-            "items": {
-              "$ref": "#/components/schemas/User1"
-            },
-            "type": "array"
+          "options": {
+            "$ref": "#/components/schemas/TableMetadataOptionsResponse"
           },
-          "tags": {
+          "referred_columns": {
             "items": {
-              "$ref": "#/components/schemas/TagGetResponseSchema"
+              "type": "string"
             },
             "type": "array"
           },
-          "type": {
+          "referred_schema": {
             "type": "string"
           },
-          "url": {
-            "type": "string"
-          }
-        },
-        "type": "object"
-      },
-      "TemporaryCachePostSchema": {
-        "properties": {
-          "value": {
-            "description": "Any type of JSON supported text.",
+          "referred_table": {
             "type": "string"
-          }
-        },
-        "required": [
-          "value"
-        ],
-        "type": "object"
-      },
-      "TemporaryCachePutSchema": {
-        "properties": {
-          "value": {
-            "description": "Any type of JSON supported text.",
+          },
+          "type": {
             "type": "string"
           }
         },
-        "required": [
-          "value"
-        ],
         "type": "object"
       },
-      "UploadFileMetadata": {
+      "TableMetadataOptionsResponse": {
         "properties": {
-          "items": {
-            "items": {
-              "$ref": "#/components/schemas/UploadFileMetadataItem"
-            },
-            "type": "array"
+          "deferrable": {
+            "type": "boolean"
+          },
+          "initially": {
+            "type": "boolean"
+          },
+          "match": {
+            "type": "boolean"
+          },
+          "ondelete": {
+            "type": "boolean"
+          },
+          "onupdate": {
+            "type": "boolean"
           }
         },
         "type": "object"
       },
-      "UploadFileMetadataItem": {
+      "TableMetadataPrimaryKeyResponse": {
         "properties": {
           "column_names": {
-            "description": "A list of columns names in the sheet",
             "items": {
+              "description": "A list of column names that compose the primary key",
               "type": "string"
             },
             "type": "array"
           },
-          "sheet_name": {
-            "description": "The name of the sheet",
+          "name": {
+            "description": "The primary key index name",
+            "type": "string"
+          },
+          "type": {
             "type": "string"
           }
         },
         "type": "object"
       },
-      "User": {
+      "TableMetadataResponseSchema": {
         "properties": {
-          "first_name": {
+          "columns": {
+            "description": "A list of columns and their metadata",
+            "items": {
+              "$ref": "#/components/schemas/TableMetadataColumnsResponse"
+            },
+            "type": "array"
+          },
+          "foreignKeys": {
+            "description": "A list of foreign keys and their metadata",
+            "items": {
+              "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse"
+            },
+            "type": "array"
+          },
+          "indexes": {
+            "description": "A list of indexes and their metadata",
+            "items": {
+              "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse"
+            },
+            "type": "array"
+          },
+          "name": {
+            "description": "The name of the table",
             "type": "string"
           },
-          "id": {
-            "type": "integer"
+          "primaryKey": {
+            "allOf": [
+              {
+                "$ref": "#/components/schemas/TableMetadataPrimaryKeyResponse"
+              }
+            ],
+            "description": "Primary keys metadata"
           },
-          "last_name": {
+          "selectStar": {
+            "description": "SQL select star",
             "type": "string"
           }
         },
         "type": "object"
       },
-      "User1": {
+      "Tables": {
         "properties": {
-          "first_name": {
-            "type": "string"
-          },
           "id": {
             "type": "integer"
           },
-          "last_name": {
+          "schema": {
             "type": "string"
           },
-          "username": {
+          "table_name": {
             "type": "string"
           }
         },
         "type": "object"
       },
-      "User2": {
+      "TabsPayloadSchema": {
         "properties": {
-          "first_name": {
-            "type": "string"
-          },
-          "last_name": {
-            "type": "string"
+          "all_tabs": {
+            "additionalProperties": {
+              "type": "string"
+            },
+            "type": "object"
           },
-          "username": {
-            "type": "string"
+          "tab_tree": {
+            "items": {
+              "$ref": "#/components/schemas/Tab"
+            },
+            "type": "array"
           }
         },
         "type": "object"
       },
-      "UserResponseSchema": {
+      "Tag": {
         "properties": {
-          "email": {
-            "type": "string"
+          "id": {
+            "type": "integer"
           },
-          "first_name": {
+          "name": {
             "type": "string"
           },
+          "type": {
+            "enum": [
+              1,
+              2,
+              3,
+              4
+            ]
+          }
+        },
+        "type": "object"
+      },
+      "TagGetResponseSchema": {
+        "properties": {
           "id": {
             "type": "integer"
           },
-          "is_active": {
-            "type": "boolean"
-          },
-          "is_anonymous": {
-            "type": "boolean"
-          },
-          "last_name": {
+          "name": {
             "type": "string"
           },
-          "username": {
+          "type": {
             "type": "string"
           }
         },
         "type": "object"
       },
-      "ValidateSQLRequest": {
+      "TagObject": {
         "properties": {
-          "catalog": {
-            "nullable": true,
-            "type": "string"
-          },
-          "schema": {
+          "description": {
             "nullable": true,
             "type": "string"
           },
-          "sql": {
-            "description": "SQL statement to validate",
+          "name": {
+            "minLength": 1,
             "type": "string"
           },
-          "template_params": {
-            "nullable": true,
-            "type": "object"
+          "objects_to_tag": {
+            "description": "Objects to tag",
+            "items": {},
+            "type": "array"
           }
         },
-        "required": [
-          "sql"
-        ],
         "type": "object"
       },
-      "ValidateSQLResponse": {
+      "TagPostBulkResponseObject": {
         "properties": {
-          "end_column": {
-            "type": "integer"
-          },
-          "line_number": {
-            "type": "integer"
-          },
-          "message": {
-            "type": "string"
+          "objects_skipped": {
+            "description": "Objects to tag",
+            "items": {},
+            "type": "array"
           },
-          "start_column": {
-            "type": "integer"
+          "objects_tagged": {
+            "description": "Objects to tag",
+            "items": {},
+            "type": "array"
           }
         },
         "type": "object"
       },
-      "ValidatorConfigJSON": {
+      "TagPostBulkResponseSchema": {
         "properties": {
-          "op": {
-            "description": "The operation to compare with a threshold to apply to the SQL output\n",
-            "enum": [
-              "<",
-              "<=",
-              ">",
-              ">=",
-              "==",
-              "!="
-            ],
-            "type": "string"
-          },
-          "threshold": {
-            "type": "number"
+          "result": {
+            "$ref": "#/components/schemas/TagPostBulkResponseObject"
           }
         },
         "type": "object"
       },
-      "advanced_data_type_convert_schema": {
+      "TagPostBulkSchema": {
         "properties": {
-          "type": {
-            "default": "port",
-            "type": "string"
-          },
-          "values": {
+          "tags": {
             "items": {
-              "default": "http"
+              "$ref": "#/components/schemas/TagObject"
             },
-            "minItems": 1,
             "type": "array"
           }
         },
-        "required": [
-          "type",
-          "values"
-        ],
         "type": "object"
       },
-      "database_catalogs_query_schema": {
+      "TagRestApi.get": {
         "properties": {
-          "force": {
-            "type": "boolean"
+          "changed_by": {
+            "$ref": "#/components/schemas/TagRestApi.get.User"
+          },
+          "changed_on_delta_humanized": {
+            "readOnly": true
+          },
+          "created_by": {
+            "$ref": "#/components/schemas/TagRestApi.get.User1"
+          },
+          "created_on_delta_humanized": {
+            "readOnly": true
+          },
+          "description": {
+            "nullable": true,
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "name": {
+            "maxLength": 250,
+            "nullable": true,
+            "type": "string"
+          },
+          "type": {
+            "enum": [
+              1,
+              2,
+              3,
+              4
+            ]
           }
         },
         "type": "object"
       },
-      "database_schemas_query_schema": {
+      "TagRestApi.get.User": {
         "properties": {
-          "catalog": {
+          "first_name": {
+            "maxLength": 64,
             "type": "string"
           },
-          "force": {
-            "type": "boolean"
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
         "type": "object"
       },
-      "database_tables_query_schema": {
+      "TagRestApi.get.User1": {
         "properties": {
-          "catalog_name": {
+          "active": {
+            "nullable": true,
+            "type": "boolean"
+          },
+          "changed_on": {
+            "format": "date-time",
+            "nullable": true,
             "type": "string"
           },
-          "force": {
-            "type": "boolean"
+          "created_on": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
           },
-          "schema_name": {
+          "email": {
+            "maxLength": 320,
+            "type": "string"
+          },
+          "fail_login_count": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "first_name": {
+            "maxLength": 64,
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "last_login": {
+            "format": "date-time",
+            "nullable": true,
+            "type": "string"
+          },
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          },
+          "login_count": {
+            "nullable": true,
+            "type": "integer"
+          },
+          "password": {
+            "maxLength": 256,
+            "nullable": true,
+            "type": "string"
+          },
+          "username": {
+            "maxLength": 64,
             "type": "string"
           }
         },
         "required": [
-          "schema_name"
+          "email",
+          "first_name",
+          "last_name",
+          "username"
         ],
         "type": "object"
       },
-      "delete_tags_schema": {
-        "items": {
-          "type": "string"
-        },
-        "type": "array"
-      },
-      "get_delete_ids_schema": {
-        "items": {
-          "type": "integer"
-        },
-        "type": "array"
-      },
-      "get_export_ids_schema": {
-        "items": {
-          "type": "integer"
-        },
-        "type": "array"
-      },
-      "get_fav_star_ids_schema": {
-        "items": {
-          "type": "integer"
-        },
-        "type": "array"
-      },
-      "get_info_schema": {
+      "TagRestApi.get_list": {
         "properties": {
-          "add_columns": {
-            "additionalProperties": {
-              "properties": {
-                "page": {
-                  "type": "integer"
-                },
-                "page_size": {
-                  "type": "integer"
-                }
-              },
-              "type": "object"
-            },
-            "type": "object"
+          "changed_by": {
+            "$ref": "#/components/schemas/TagRestApi.get_list.User"
           },
-          "edit_columns": {
-            "additionalProperties": {
-              "properties": {
-                "page": {
-                  "type": "integer"
-                },
-                "page_size": {
-                  "type": "integer"
-                }
-              },
-              "type": "object"
-            },
-            "type": "object"
+          "changed_on_delta_humanized": {
+            "readOnly": true
           },
-          "keys": {
-            "items": {
-              "enum": [
-                "add_columns",
-                "edit_columns",
-                "filters",
-                "permissions",
-                "add_title",
-                "edit_title",
-                "none"
-              ],
-              "type": "string"
-            },
-            "type": "array"
+          "created_by": {
+            "$ref": "#/components/schemas/TagRestApi.get_list.User1"
+          },
+          "created_on_delta_humanized": {
+            "readOnly": true
+          },
+          "description": {
+            "nullable": true,
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "name": {
+            "maxLength": 250,
+            "nullable": true,
+            "type": "string"
+          },
+          "type": {
+            "enum": [
+              1,
+              2,
+              3,
+              4
+            ]
           }
         },
         "type": "object"
       },
-      "get_item_schema": {
+      "TagRestApi.get_list.User": {
         "properties": {
-          "columns": {
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
+          "first_name": {
+            "maxLength": 64,
+            "type": "string"
           },
-          "keys": {
-            "items": {
-              "enum": [
-                "show_columns",
-                "description_columns",
-                "label_columns",
-                "show_title",
-                "none"
-              ],
-              "type": "string"
-            },
-            "type": "array"
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
           }
         },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
         "type": "object"
       },
-      "get_list_schema": {
+      "TagRestApi.get_list.User1": {
         "properties": {
-          "columns": {
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
+          "first_name": {
+            "maxLength": 64,
+            "type": "string"
           },
-          "filters": {
-            "items": {
-              "properties": {
-                "col": {
-                  "type": "string"
-                },
-                "opr": {
-                  "type": "string"
-                },
-                "value": {
-                  "anyOf": [
-                    {
-                      "type": "number"
-                    },
-                    {
-                      "type": "string"
-                    },
-                    {
-                      "type": "boolean"
-                    },
-                    {
-                      "type": "array"
-                    }
-                  ]
-                }
-              },
-              "required": [
-                "col",
-                "opr",
-                "value"
-              ],
-              "type": "object"
-            },
-            "type": "array"
+          "last_name": {
+            "maxLength": 64,
+            "type": "string"
+          }
+        },
+        "required": [
+          "first_name",
+          "last_name"
+        ],
+        "type": "object"
+      },
+      "TagRestApi.post": {
+        "properties": {
+          "description": {
+            "nullable": true,
+            "type": "string"
           },
-          "keys": {
-            "items": {
-              "enum": [
-                "list_columns",
-                "order_columns",
-                "label_columns",
-                "description_columns",
-                "list_title",
-                "none"
-              ],
-              "type": "string"
-            },
+          "name": {
+            "minLength": 1,
+            "type": "string"
+          },
+          "objects_to_tag": {
+            "description": "Objects to tag",
+            "items": {},
             "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "TagRestApi.put": {
+        "properties": {
+          "description": {
+            "nullable": true,
+            "type": "string"
           },
-          "order_column": {
+          "name": {
+            "minLength": 1,
             "type": "string"
           },
-          "order_direction": {
-            "enum": [
-              "asc",
-              "desc"
-            ],
+          "objects_to_tag": {
+            "description": "Objects to tag",
+            "items": {},
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "TaggedObjectEntityResponseSchema": {
+        "properties": {
+          "changed_on": {
+            "format": "date-time",
             "type": "string"
           },
-          "page": {
-            "type": "integer"
+          "created_by": {
+            "$ref": "#/components/schemas/User"
           },
-          "page_size": {
+          "creator": {
+            "type": "string"
+          },
+          "id": {
             "type": "integer"
           },
-          "select_columns": {
+          "name": {
+            "type": "string"
+          },
+          "owners": {
             "items": {
-              "type": "string"
+              "$ref": "#/components/schemas/User1"
+            },
+            "type": "array"
+          },
+          "tags": {
+            "items": {
+              "$ref": "#/components/schemas/TagGetResponseSchema"
             },
             "type": "array"
+          },
+          "type": {
+            "type": "string"
+          },
+          "url": {
+            "type": "string"
           }
         },
         "type": "object"
       },
-      "get_recent_activity_schema": {
+      "TemporaryCachePostSchema": {
         "properties": {
-          "actions": {
+          "value": {
+            "description": "Any type of JSON supported text.",
+            "type": "string"
+          }
+        },
+        "required": [
+          "value"
+        ],
+        "type": "object"
+      },
+      "TemporaryCachePutSchema": {
+        "properties": {
+          "value": {
+            "description": "Any type of JSON supported text.",
+            "type": "string"
+          }
+        },
+        "required": [
+          "value"
+        ],
+        "type": "object"
+      },
+      "UploadFileMetadata": {
+        "properties": {
+          "items": {
             "items": {
-              "type": "string"
+              "$ref": "#/components/schemas/UploadFileMetadataItem"
             },
             "type": "array"
-          },
-          "distinct": {
-            "type": "boolean"
-          },
-          "page": {
-            "type": "number"
-          },
-          "page_size": {
-            "type": "number"
           }
         },
         "type": "object"
       },
-      "get_related_schema": {
+      "UploadFileMetadataItem": {
         "properties": {
-          "filter": {
-            "type": "string"
-          },
-          "include_ids": {
+          "column_names": {
+            "description": "A list of columns names in the sheet",
             "items": {
-              "type": "integer"
+              "type": "string"
             },
             "type": "array"
           },
-          "page": {
-            "type": "integer"
-          },
-          "page_size": {
-            "type": "integer"
+          "sheet_name": {
+            "description": "The name of the sheet",
+            "type": "string"
           }
         },
         "type": "object"
       },
-      "queries_get_updated_since_schema": {
+      "UploadFileMetadataPostSchema": {
         "properties": {
-          "last_updated_ms": {
-            "type": "number"
+          "delimiter": {
+            "description": "The character used to separate values in the CSV file (e.g., a comma, semicolon, or tab).",
+            "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"
+          },
+          "type": {
+            "description": "File type to upload",
+            "enum": [
+              "csv",
+              "excel",
+              "columnar"
+            ]
           }
         },
         "required": [
-          "last_updated_ms"
+          "file",
+          "type"
         ],
         "type": "object"
       },
-      "screenshot_query_schema": {
+      "UploadPostSchema": {
         "properties": {
-          "force": {
+          "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": "[CSV only] 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": "[CSV and Excel only] 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"
           },
-          "thumb_size": {
+          "day_first": {
+            "description": "[CSV only] DD/MM format dates, international and European format",
+            "type": "boolean"
+          },
+          "decimal_character": {
+            "description": "[CSV and Excel only] Character to recognize as decimal point. Default is '.'",
+            "type": "string"
+          },
+          "delimiter": {
+            "description": "[CSV only] The character used to separate values in the CSV file (e.g., a comma, semicolon, or tab).",
+            "type": "string"
+          },
+          "file": {
+            "description": "The file to upload",
+            "format": "text/csv",
+            "type": "string"
+          },
+          "header_row": {
+            "description": "[CSV and Excel only] 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": "[CSV and Excel only] 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": "[CSV and Excel only] 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": "integer"
+              "type": "string"
             },
             "type": "array"
           },
-          "window_size": {
-            "items": {
-              "type": "integer"
+          "rows_to_read": {
+            "description": "[CSV and Excel only] 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": "[Excel only]] Strings used for sheet names (default is the first sheet).",
+            "type": "string"
+          },
+          "skip_blank_lines": {
+            "description": "[CSV only] Skip blank lines in the CSV file.",
+            "type": "boolean"
+          },
+          "skip_initial_space": {
+            "description": "[CSV only] Skip spaces after delimiter.",
+            "type": "boolean"
+          },
+          "skip_rows": {
+            "description": "[CSV and Excel only] 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"
+          },
+          "type": {
+            "description": "File type to upload",
+            "enum": [
+              "csv",
+              "excel",
+              "columnar"
+            ]
+          }
+        },
+        "required": [
+          "file",
+          "table_name",
+          "type"
+        ],
+        "type": "object"
+      },
+      "User": {
+        "properties": {
+          "first_name": {
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "last_name": {
+            "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "User1": {
+        "properties": {
+          "first_name": {
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "last_name": {
+            "type": "string"
+          },
+          "username": {
+            "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "User2": {
+        "properties": {
+          "first_name": {
+            "type": "string"
+          },
+          "last_name": {
+            "type": "string"
+          },
+          "username": {
+            "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "UserResponseSchema": {
+        "properties": {
+          "email": {
+            "type": "string"
+          },
+          "first_name": {
+            "type": "string"
+          },
+          "id": {
+            "type": "integer"
+          },
+          "is_active": {
+            "type": "boolean"
+          },
+          "is_anonymous": {
+            "type": "boolean"
+          },
+          "last_name": {
+            "type": "string"
+          },
+          "username": {
+            "type": "string"
+          }
+        },
+        "type": "object"
+      },
+      "ValidateSQLRequest": {
+        "properties": {
+          "catalog": {
+            "nullable": true,
+            "type": "string"
+          },
+          "schema": {
+            "nullable": true,
+            "type": "string"
+          },
+          "sql": {
+            "description": "SQL statement to validate",
+            "type": "string"
+          },
+          "template_params": {
+            "nullable": true,
+            "type": "object"
+          }
+        },
+        "required": [
+          "sql"
+        ],
+        "type": "object"
+      },
+      "ValidateSQLResponse": {
+        "properties": {
+          "end_column": {
+            "type": "integer"
+          },
+          "line_number": {
+            "type": "integer"
+          },
+          "message": {
+            "type": "string"
+          },
+          "start_column": {
+            "type": "integer"
+          }
+        },
+        "type": "object"
+      },
+      "ValidatorConfigJSON": {
+        "properties": {
+          "op": {
+            "description": "The operation to compare with a threshold to apply to the SQL output\n",
+            "enum": [
+              "<",
+              "<=",
+              ">",
+              ">=",
+              "==",
+              "!="
+            ],
+            "type": "string"
+          },
+          "threshold": {
+            "type": "number"
+          }
+        },
+        "type": "object"
+      },
+      "ViewMenuApi.get": {
+        "properties": {
+          "id": {
+            "type": "integer"
+          },
+          "name": {
+            "maxLength": 250,
+            "type": "string"
+          }
+        },
+        "required": [
+          "name"
+        ],
+        "type": "object"
+      },
+      "ViewMenuApi.get_list": {
+        "properties": {
+          "id": {
+            "type": "integer"
+          },
+          "name": {
+            "maxLength": 250,
+            "type": "string"
+          }
+        },
+        "required": [
+          "name"
+        ],
+        "type": "object"
+      },
+      "ViewMenuApi.post": {
+        "properties": {
+          "name": {
+            "maxLength": 250,
+            "type": "string"
+          }
+        },
+        "required": [
+          "name"
+        ],
+        "type": "object"
+      },
+      "ViewMenuApi.put": {
+        "properties": {
+          "name": {
+            "maxLength": 250,
+            "type": "string"
+          }
+        },
+        "required": [
+          "name"
+        ],
+        "type": "object"
+      },
+      "advanced_data_type_convert_schema": {
+        "properties": {
+          "type": {
+            "default": "port",
+            "type": "string"
+          },
+          "values": {
+            "items": {
+              "default": "http"
+            },
+            "minItems": 1,
+            "type": "array"
+          }
+        },
+        "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"
+          },
+          "upload_allowed": {
+            "type": "boolean"
+          }
+        },
+        "type": "object"
+      },
+      "database_tables_query_schema": {
+        "properties": {
+          "catalog_name": {
+            "type": "string"
+          },
+          "force": {
+            "type": "boolean"
+          },
+          "schema_name": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "schema_name"
+        ],
+        "type": "object"
+      },
+      "delete_tags_schema": {
+        "items": {
+          "type": "string"
+        },
+        "type": "array"
+      },
+      "get_delete_ids_schema": {
+        "items": {
+          "type": "integer"
+        },
+        "type": "array"
+      },
+      "get_export_ids_schema": {
+        "items": {
+          "type": "integer"
+        },
+        "type": "array"
+      },
+      "get_fav_star_ids_schema": {
+        "items": {
+          "type": "integer"
+        },
+        "type": "array"
+      },
+      "get_info_schema": {
+        "properties": {
+          "add_columns": {
+            "additionalProperties": {
+              "properties": {
+                "page": {
+                  "type": "integer"
+                },
+                "page_size": {
+                  "type": "integer"
+                }
+              },
+              "type": "object"
+            },
+            "type": "object"
+          },
+          "edit_columns": {
+            "additionalProperties": {
+              "properties": {
+                "page": {
+                  "type": "integer"
+                },
+                "page_size": {
+                  "type": "integer"
+                }
+              },
+              "type": "object"
+            },
+            "type": "object"
+          },
+          "keys": {
+            "items": {
+              "enum": [
+                "add_columns",
+                "edit_columns",
+                "filters",
+                "permissions",
+                "add_title",
+                "edit_title",
+                "none"
+              ],
+              "type": "string"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "get_item_schema": {
+        "properties": {
+          "columns": {
+            "items": {
+              "type": "string"
+            },
+            "type": "array"
+          },
+          "keys": {
+            "items": {
+              "enum": [
+                "show_columns",
+                "description_columns",
+                "label_columns",
+                "show_title",
+                "none"
+              ],
+              "type": "string"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "get_list_schema": {
+        "properties": {
+          "columns": {
+            "items": {
+              "type": "string"
+            },
+            "type": "array"
+          },
+          "filters": {
+            "items": {
+              "properties": {
+                "col": {
+                  "type": "string"
+                },
+                "opr": {
+                  "type": "string"
+                },
+                "value": {
+                  "anyOf": [
+                    {
+                      "type": "number"
+                    },
+                    {
+                      "type": "string"
+                    },
+                    {
+                      "type": "boolean"
+                    },
+                    {
+                      "type": "array"
+                    }
+                  ]
+                }
+              },
+              "required": [
+                "col",
+                "opr",
+                "value"
+              ],
+              "type": "object"
+            },
+            "type": "array"
+          },
+          "keys": {
+            "items": {
+              "enum": [
+                "list_columns",
+                "order_columns",
+                "label_columns",
+                "description_columns",
+                "list_title",
+                "none"
+              ],
+              "type": "string"
+            },
+            "type": "array"
+          },
+          "order_column": {
+            "type": "string"
+          },
+          "order_direction": {
+            "enum": [
+              "asc",
+              "desc"
+            ],
+            "type": "string"
+          },
+          "page": {
+            "type": "integer"
+          },
+          "page_size": {
+            "type": "integer"
+          },
+          "select_columns": {
+            "items": {
+              "type": "string"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "get_recent_activity_schema": {
+        "properties": {
+          "actions": {
+            "items": {
+              "type": "string"
+            },
+            "type": "array"
+          },
+          "distinct": {
+            "type": "boolean"
+          },
+          "page": {
+            "type": "number"
+          },
+          "page_size": {
+            "type": "number"
+          }
+        },
+        "type": "object"
+      },
+      "get_related_schema": {
+        "properties": {
+          "filter": {
+            "type": "string"
+          },
+          "include_ids": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          },
+          "page": {
+            "type": "integer"
+          },
+          "page_size": {
+            "type": "integer"
+          }
+        },
+        "type": "object"
+      },
+      "queries_get_updated_since_schema": {
+        "properties": {
+          "last_updated_ms": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "last_updated_ms"
+        ],
+        "type": "object"
+      },
+      "screenshot_query_schema": {
+        "properties": {
+          "force": {
+            "type": "boolean"
+          },
+          "thumb_size": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          },
+          "window_size": {
+            "items": {
+              "type": "integer"
+            },
+            "type": "array"
+          }
+        },
+        "type": "object"
+      },
+      "sql_lab_get_results_schema": {
+        "properties": {
+          "key": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "key"
+        ],
+        "type": "object"
+      },
+      "thumbnail_query_schema": {
+        "properties": {
+          "force": {
+            "type": "boolean"
+          }
+        },
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "jwt": {
+        "bearerFormat": "JWT",
+        "scheme": "bearer",
+        "type": "http"
+      },
+      "jwt_refresh": {
+        "bearerFormat": "JWT",
+        "scheme": "bearer",
+        "type": "http"
+      }
+    }
+  },
+  "info": {
+    "description": "Superset",
+    "title": "Superset",
+    "version": "v1"
+  },
+  "openapi": "3.0.2",
+  "paths": {
+    "/api/v1/advanced_data_type/convert": {
+      "get": {
+        "description": "Returns an AdvancedDataTypeResponse object populated with the passed in args.",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/advanced_data_type_convert_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/AdvancedDataTypeSchema"
+                }
+              }
+            },
+            "description": "AdvancedDataTypeResponse object has been returned."
+          },
+          "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": "Return an AdvancedDataTypeResponse",
+        "tags": [
+          "Advanced Data Type"
+        ]
+      }
+    },
+    "/api/v1/advanced_data_type/types": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "result": {
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "a successful return of the available advanced data types has taken place."
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Return a list of available advanced data types",
+        "tags": [
+          "Advanced Data Type"
+        ]
+      }
+    },
+    "/api/v1/annotation_layer/": {
+      "delete": {
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "CSS templates bulk delete"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Delete multiple annotation layers in a bulk operation",
+        "tags": [
+          "Annotation Layers"
+        ]
+      },
+      "get": {
+        "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": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Items from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get a list of annotation layers",
+        "tags": [
+          "Annotation Layers"
+        ]
+      },
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/AnnotationLayerRestApi.post"
+              }
+            }
+          },
+          "description": "Annotation Layer schema",
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/AnnotationLayerRestApi.post"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
             },
-            "type": "array"
+            "description": "Annotation added"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
           }
         },
-        "type": "object"
-      },
-      "sql_lab_get_results_schema": {
-        "properties": {
-          "key": {
-            "type": "string"
+        "security": [
+          {
+            "jwt": []
           }
-        },
-        "required": [
-          "key"
         ],
-        "type": "object"
-      },
-      "thumbnail_query_schema": {
-        "properties": {
-          "force": {
-            "type": "boolean"
-          }
-        },
-        "type": "object"
+        "summary": "Create an annotation layer",
+        "tags": [
+          "Annotation Layers"
+        ]
       }
     },
-    "securitySchemes": {
-      "jwt": {
-        "bearerFormat": "JWT",
-        "scheme": "bearer",
-        "type": "http"
-      },
-      "jwt_refresh": {
-        "bearerFormat": "JWT",
-        "scheme": "bearer",
-        "type": "http"
-      }
-    }
-  },
-  "info": {
-    "description": "Superset",
-    "title": "Superset",
-    "version": "v1"
-  },
-  "openapi": "3.0.2",
-  "paths": {
-    "/api/v1/advanced_data_type/convert": {
+    "/api/v1/annotation_layer/_info": {
       "get": {
-        "description": "Returns an AdvancedDataTypeResponse object populated with the passed in args.",
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/advanced_data_type_convert_schema"
+                  "$ref": "#/components/schemas/get_info_schema"
                 }
               }
             },
@@ -11722,11 +12190,47 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AdvancedDataTypeSchema"
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "AdvancedDataTypeResponse object has been returned."
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -11734,11 +12238,8 @@
           "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"
@@ -11749,39 +12250,52 @@
             "jwt": []
           }
         ],
-        "summary": "Return an AdvancedDataTypeResponse",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Advanced Data Type"
+          "Annotation Layers"
         ]
       }
     },
-    "/api/v1/advanced_data_type/types": {
+    "/api/v1/annotation_layer/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": {
-                  "properties": {
-                    "result": {
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "a successful return of the available advanced data types has taken place."
+            "description": "Related column data"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -11794,25 +12308,23 @@
             "jwt": []
           }
         ],
-        "summary": "Return a list of available advanced data types",
+        "summary": "Get related fields data",
         "tags": [
-          "Advanced Data Type"
+          "Annotation Layers"
         ]
       }
     },
-    "/api/v1/annotation_layer/": {
+    "/api/v1/annotation_layer/{pk}": {
       "delete": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "The annotation layer pk for this annotation",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -11829,10 +12341,7 @@
                 }
               }
             },
-            "description": "CSS templates bulk delete"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
+            "description": "Item deleted"
           },
           "404": {
             "$ref": "#/components/responses/404"
@@ -11849,19 +12358,27 @@
             "jwt": []
           }
         ],
-        "summary": "Delete multiple annotation layers in a bulk operation",
+        "summary": "Delete annotation layer",
         "tags": [
           "Annotation Layers"
         ]
       },
       "get": {
-        "description": "Gets a list of annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.",
+        "description": "Get an item model",
         "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
@@ -11875,10 +12392,6 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -11889,12 +12402,9 @@
                       },
                       "type": "object"
                     },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                    "id": {
+                      "description": "The item id",
+                      "type": "string"
                     },
                     "label_columns": {
                       "properties": {
@@ -11906,38 +12416,27 @@
                       },
                       "type": "object"
                     },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/AnnotationLayerRestApi.get"
                     },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
+                    "show_columns": {
+                      "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list"
-                      },
-                      "type": "array"
+                    "show_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "Show Item Details",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -11945,6 +12444,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -11957,25 +12459,36 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of annotation layers",
+        "summary": "Get an annotation layer",
         "tags": [
           "Annotation Layers"
         ]
       },
-      "post": {
+      "put": {
+        "parameters": [
+          {
+            "description": "The annotation layer pk for this annotation",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/AnnotationLayerRestApi.post"
+                "$ref": "#/components/schemas/AnnotationLayerRestApi.put"
               }
             }
           },
-          "description": "Annotation Layer schema",
+          "description": "Annotation schema",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
@@ -11984,14 +12497,14 @@
                       "type": "number"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/AnnotationLayerRestApi.post"
+                      "$ref": "#/components/schemas/AnnotationLayerRestApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Annotation added"
+            "description": "Annotation changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -12011,21 +12524,29 @@
             "jwt": []
           }
         ],
-        "summary": "Create an annotation layer",
+        "summary": "Update an annotation layer",
         "tags": [
           "Annotation Layers"
         ]
       }
     },
-    "/api/v1/annotation_layer/_info": {
-      "get": {
-        "description": "Get metadata information about this API resource",
+    "/api/v1/annotation_layer/{pk}/annotation/": {
+      "delete": {
         "parameters": [
+          {
+            "description": "The annotation layer pk for this annotation",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
                 }
               }
             },
@@ -12039,53 +12560,22 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
-                      "type": "object"
-                    },
-                    "edit_columns": {
-                      "type": "object"
-                    },
-                    "filters": {
-                      "properties": {
-                        "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
-                        }
-                      },
-                      "type": "object"
-                    },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Annotations bulk delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -12098,28 +12588,28 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Bulk delete annotation layers",
         "tags": [
           "Annotation Layers"
         ]
-      }
-    },
-    "/api/v1/annotation_layer/related/{column_name}": {
+      },
       "get": {
+        "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",
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -12132,11 +12622,96 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "ids": {
+                      "description": "A list of annotation ids",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/AnnotationRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "Items from Annotations"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get a list of annotation layers",
+        "tags": [
+          "Annotation Layers"
+        ]
+      },
+      "post": {
+        "parameters": [
+          {
+            "description": "The annotation layer pk for this annotation",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/AnnotationRestApi.post"
+              }
+            }
+          },
+          "description": "Annotation schema",
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/AnnotationRestApi.post"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Annotation added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -12156,13 +12731,13 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Create an annotation layer",
         "tags": [
           "Annotation Layers"
         ]
       }
     },
-    "/api/v1/annotation_layer/{pk}": {
+    "/api/v1/annotation_layer/{pk}/annotation/{annotation_id}": {
       "delete": {
         "parameters": [
           {
@@ -12173,6 +12748,15 @@
             "schema": {
               "type": "integer"
             }
+          },
+          {
+            "description": "The annotation pk for this annotation",
+            "in": "path",
+            "name": "annotation_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -12212,9 +12796,9 @@
         ]
       },
       "get": {
-        "description": "Get an item model",
         "parameters": [
           {
+            "description": "The annotation layer pk for this annotation",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -12222,6 +12806,15 @@
               "type": "integer"
             }
           },
+          {
+            "description": "The annotation pk",
+            "in": "path",
+            "name": "annotation_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
@@ -12240,44 +12833,12 @@
               "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/AnnotationLayerRestApi.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"
+                    "result": {
+                      "$ref": "#/components/schemas/AnnotationRestApi.get"
                     }
                   },
                   "type": "object"
@@ -12322,13 +12883,22 @@
             "schema": {
               "type": "integer"
             }
+          },
+          {
+            "description": "The annotation pk for this annotation",
+            "in": "path",
+            "name": "annotation_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/AnnotationLayerRestApi.put"
+                "$ref": "#/components/schemas/AnnotationRestApi.put"
               }
             }
           },
@@ -12345,7 +12915,7 @@
                       "type": "number"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/AnnotationLayerRestApi.put"
+                      "$ref": "#/components/schemas/AnnotationRestApi.put"
                     }
                   },
                   "type": "object"
@@ -12378,30 +12948,81 @@
         ]
       }
     },
-    "/api/v1/annotation_layer/{pk}/annotation/": {
-      "delete": {
-        "parameters": [
-          {
-            "description": "The annotation layer pk for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
+    "/api/v1/assets/export/": {
+      "get": {
+        "description": "Gets a ZIP file with all the Superset assets (databases, datasets, charts, dashboards, saved queries) as YAML files.",
+        "responses": {
+          "200": {
             "content": {
-              "application/json": {
+              "application/zip": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "in": "query",
-            "name": "q"
+            "description": "ZIP file"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
           }
         ],
+        "summary": "Export all assets",
+        "tags": [
+          "Import/export"
+        ]
+      }
+    },
+    "/api/v1/assets/import/": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "multipart/form-data": {
+              "schema": {
+                "properties": {
+                  "bundle": {
+                    "description": "upload file (ZIP or JSON)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "sparse": {
+                    "description": "allow sparse update of resources",
+                    "type": "boolean"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          },
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
@@ -12416,14 +13037,14 @@
                 }
               }
             },
-            "description": "Annotations bulk delete"
+            "description": "Assets import result"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -12436,33 +13057,23 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete annotation layers",
+        "summary": "Import multiple assets",
         "tags": [
-          "Annotation Layers"
+          "Import/export"
         ]
-      },
+      }
+    },
+    "/api/v1/async_event/": {
       "get": {
-        "description": "Gets a list of annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.",
+        "description": "Reads off of the Redis events stream, using the user's JWT token and optional query params for last event received.",
         "parameters": [
           {
-            "description": "The annotation layer id for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
+            "description": "Last ID received by the client",
+            "in": "query",
+            "name": "last_id",
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
         "responses": {
@@ -12471,21 +13082,35 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "ids": {
-                      "description": "A list of annotation ids",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
                     "result": {
-                      "description": "The result from the get list query",
                       "items": {
-                        "$ref": "#/components/schemas/AnnotationRestApi.get_list"
+                        "properties": {
+                          "channel_id": {
+                            "type": "string"
+                          },
+                          "errors": {
+                            "items": {
+                              "type": "object"
+                            },
+                            "type": "array"
+                          },
+                          "id": {
+                            "type": "string"
+                          },
+                          "job_id": {
+                            "type": "string"
+                          },
+                          "result_url": {
+                            "type": "string"
+                          },
+                          "status": {
+                            "type": "string"
+                          },
+                          "user_id": {
+                            "type": "integer"
+                          }
+                        },
+                        "type": "object"
                       },
                       "type": "array"
                     }
@@ -12494,17 +13119,11 @@
                 }
               }
             },
-            "description": "Items from Annotations"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Async event results"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -12514,62 +13133,69 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of annotation layers",
+        "summary": "Read off of the Redis events stream",
         "tags": [
-          "Annotation Layers"
+          "AsyncEventsRestApi"
         ]
-      },
-      "post": {
-        "parameters": [
-          {
-            "description": "The annotation layer pk for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/AnnotationRestApi.post"
-              }
-            }
-          },
-          "description": "Annotation schema",
-          "required": true
-        },
+      }
+    },
+    "/api/v1/available_domains/": {
+      "get": {
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
                     "result": {
-                      "$ref": "#/components/schemas/AnnotationRestApi.post"
+                      "$ref": "#/components/schemas/AvailableDomainsSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Annotation added"
+            "description": "a list of available domains"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "403": {
+            "$ref": "#/components/responses/403"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get all available domains",
+        "tags": [
+          "Available Domains"
+        ]
+      }
+    },
+    "/api/v1/cachekey/invalidate": {
+      "post": {
+        "description": "Takes a list of datasources, finds and invalidates the associated cache records and removes the database records.",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/CacheInvalidationRequestSchema"
+              }
+            }
+          },
+          "description": "A list of datasources uuid or the tuples of database and datasource names",
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "description": "cache was successfully invalidated"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -12579,32 +13205,25 @@
             "jwt": []
           }
         ],
-        "summary": "Create an annotation layer",
+        "summary": "Invalidate cache records and remove the database records",
         "tags": [
-          "Annotation Layers"
+          "CacheRestApi"
         ]
       }
     },
-    "/api/v1/annotation_layer/{pk}/annotation/{annotation_id}": {
+    "/api/v1/chart/": {
       "delete": {
         "parameters": [
           {
-            "description": "The annotation layer pk for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The annotation pk for this annotation",
-            "in": "path",
-            "name": "annotation_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -12621,7 +13240,13 @@
                 }
               }
             },
-            "description": "Item deleted"
+            "description": "Charts bulk delete"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "403": {
+            "$ref": "#/components/responses/403"
           },
           "404": {
             "$ref": "#/components/responses/404"
@@ -12638,36 +13263,19 @@
             "jwt": []
           }
         ],
-        "summary": "Delete annotation layer",
+        "summary": "Bulk delete charts",
         "tags": [
-          "Annotation Layers"
+          "Charts"
         ]
       },
       "get": {
+        "description": "Gets a list of charts, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
-          {
-            "description": "The annotation layer pk for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The annotation pk",
-            "in": "path",
-            "name": "annotation_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -12681,19 +13289,69 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "description": "The item id",
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
                       "type": "string"
                     },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
                     "result": {
-                      "$ref": "#/components/schemas/AnnotationRestApi.get"
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/ChartRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -12701,9 +13359,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -12716,45 +13371,25 @@
             "jwt": []
           }
         ],
-        "summary": "Get an annotation layer",
+        "summary": "Get a list of charts",
         "tags": [
-          "Annotation Layers"
+          "Charts"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "description": "The annotation layer pk for this annotation",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The annotation pk for this annotation",
-            "in": "path",
-            "name": "annotation_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/AnnotationRestApi.put"
+                "$ref": "#/components/schemas/ChartRestApi.post"
               }
             }
           },
-          "description": "Annotation schema",
+          "description": "Chart schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
@@ -12763,14 +13398,104 @@
                       "type": "number"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/AnnotationRestApi.put"
+                      "$ref": "#/components/schemas/ChartRestApi.post"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Chart added"
+          },
+          "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 new chart",
+        "tags": [
+          "Charts"
+        ]
+      }
+    },
+    "/api/v1/chart/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Annotation changed"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -12778,8 +13503,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -12790,66 +13515,53 @@
             "jwt": []
           }
         ],
-        "summary": "Update an annotation layer",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Annotation Layers"
+          "Charts"
         ]
       }
     },
-    "/api/v1/apple/health": {
-      "get": {
-        "description": "Endpoint for checking the health status of the metastore and cache",
+    "/api/v1/chart/data": {
+      "post": {
+        "description": "Takes a query context constructed in the client and returns payload data response for the given query.",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ChartDataQueryContextSchema"
+              }
+            }
+          },
+          "description": "A query context consists of a datasource from which to fetch data and one or many query objects.",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AppleHealthResponseSchema"
+                  "$ref": "#/components/schemas/ChartDataResponseSchema"
                 }
               }
             },
-            "description": "The"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "403": {
-            "$ref": "#/components/responses/403"
+            "description": "Query result"
           },
-          "500": {
-            "$ref": "#/components/responses/500"
-          }
-        },
-        "summary": "Get the health status of the metastore and cache",
-        "tags": [
-          "Apple"
-        ]
-      }
-    },
-    "/api/v1/assets/export/": {
-      "get": {
-        "description": "Gets a ZIP file with all the Superset assets (databases, datasets, charts, dashboards, saved queries) as YAML files.",
-        "responses": {
-          "200": {
+          "202": {
             "content": {
-              "application/zip": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "$ref": "#/components/schemas/ChartDataAsyncResponseSchema"
                 }
               }
             },
-            "description": "ZIP file"
+            "description": "Async job details"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -12859,62 +13571,35 @@
             "jwt": []
           }
         ],
-        "summary": "Export all assets",
+        "summary": "Return payload data response for the given query",
         "tags": [
-          "Import/export"
+          "Charts"
         ]
       }
     },
-    "/api/v1/assets/import/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "properties": {
-                  "bundle": {
-                    "description": "upload file (ZIP or JSON)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              }
+    "/api/v1/chart/data/{cache_key}": {
+      "get": {
+        "description": "Takes a query context cache key and returns payload data response for the given query.",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "cache_key",
+            "required": true,
+            "schema": {
+              "type": "string"
             }
-          },
-          "required": true
-        },
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/ChartDataResponseSchema"
                 }
               }
             },
-            "description": "Assets import result"
+            "description": "Query result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -12922,6 +13607,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -12934,73 +13622,48 @@
             "jwt": []
           }
         ],
-        "summary": "Import multiple assets",
+        "summary": "Return payload data response for the given query",
         "tags": [
-          "Import/export"
+          "Charts"
         ]
       }
     },
-    "/api/v1/async_event/": {
+    "/api/v1/chart/export/": {
       "get": {
-        "description": "Reads off of the Redis events stream, using the user's JWT token and optional query params for last event received.",
         "parameters": [
           {
-            "description": "Last ID received by the client",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_export_ids_schema"
+                }
+              }
+            },
             "in": "query",
-            "name": "last_id",
-            "schema": {
-              "type": "string"
-            }
+            "name": "q"
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "application/zip": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "items": {
-                        "properties": {
-                          "channel_id": {
-                            "type": "string"
-                          },
-                          "errors": {
-                            "items": {
-                              "type": "object"
-                            },
-                            "type": "array"
-                          },
-                          "id": {
-                            "type": "string"
-                          },
-                          "job_id": {
-                            "type": "string"
-                          },
-                          "result_url": {
-                            "type": "string"
-                          },
-                          "status": {
-                            "type": "string"
-                          },
-                          "user_id": {
-                            "type": "integer"
-                          }
-                        },
-                        "type": "object"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Async event results"
+            "description": "A zip file with chart(s), dataset(s) and database(s) as YAML"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -13010,35 +13673,49 @@
             "jwt": []
           }
         ],
-        "summary": "Read off of the Redis events stream",
+        "summary": "Download multiple charts as YAML files",
         "tags": [
-          "AsyncEventsRestApi"
+          "Charts"
         ]
       }
     },
-    "/api/v1/available_domains/": {
+    "/api/v1/chart/favorite_status/": {
       "get": {
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_fav_star_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/AvailableDomainsSchema"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/GetFavStarIdsSchema"
                 }
               }
             },
-            "description": "a list of available domains"
+            "description": "None"
+          },
+          "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": [
@@ -13046,33 +13723,76 @@
             "jwt": []
           }
         ],
-        "summary": "Get all available domains",
+        "summary": "Check favorited charts for current user",
         "tags": [
-          "Available Domains"
+          "Charts"
         ]
       }
     },
-    "/api/v1/cachekey/invalidate": {
+    "/api/v1/chart/import/": {
       "post": {
-        "description": "Takes a list of datasources, finds and invalidates the associated cache records and removes the database records.",
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/CacheInvalidationRequestSchema"
+                "properties": {
+                  "formData": {
+                    "description": "upload file (ZIP)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "overwrite": {
+                    "description": "overwrite existing charts?",
+                    "type": "boolean"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
               }
             }
           },
-          "description": "A list of datasources uuid or the tuples of database and datasource names",
           "required": true
         },
         "responses": {
-          "201": {
-            "description": "cache was successfully invalidated"
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Chart import result"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -13082,20 +13802,29 @@
             "jwt": []
           }
         ],
-        "summary": "Invalidate cache records and remove the database records",
+        "summary": "Import chart(s) with associated datasets and databases",
         "tags": [
-          "CacheRestApi"
+          "Charts"
         ]
       }
     },
-    "/api/v1/chart/": {
-      "delete": {
+    "/api/v1/chart/related/{column_name}": {
+      "get": {
+        "description": "Get a list of all possible owners for a chart. Use `owners` has the `column_name` parameter",
         "parameters": [
+          {
+            "in": "path",
+            "name": "column_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                  "$ref": "#/components/schemas/get_related_schema"
                 }
               }
             },
@@ -13108,29 +13837,21 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "Charts bulk delete"
+            "description": "Related column data"
+          },
+          "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"
           }
@@ -13140,104 +13861,42 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete charts",
+        "summary": "Get related fields data",
         "tags": [
           "Charts"
         ]
-      },
-      "get": {
-        "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": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
-                }
+      }
+    },
+    "/api/v1/chart/warm_up_cache": {
+      "put": {
+        "description": "Warms up the cache for the chart. Note for slices a force refresh occurs. In terms of the `extra_filters` these can be obtained from records in the JSON encoded `logs.json` column associated with the `explore_json` action.",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ChartCacheWarmUpRequestSchema"
               }
-            },
-            "in": "query",
-            "name": "q"
-          }
-        ],
+            }
+          },
+          "description": "Identifies the chart to warm up cache for, and any additional dashboard or filter context to use.",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/ChartRestApi.get_list"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/ChartCacheWarmUpResponseSchema"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Each chart's warmup status"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -13248,44 +13907,39 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of charts",
+        "summary": "Warm up the cache for the chart",
         "tags": [
           "Charts"
         ]
-      },
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ChartRestApi.post"
-              }
+      }
+    },
+    "/api/v1/chart/{pk}": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
-          },
-          "description": "Chart schema",
-          "required": true
-        },
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/ChartRestApi.post"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Chart added"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Chart delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -13293,6 +13947,9 @@
           "403": {
             "$ref": "#/components/responses/403"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -13305,21 +13962,27 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new chart",
+        "summary": "Delete a chart",
         "tags": [
           "Charts"
         ]
-      }
-    },
-    "/api/v1/chart/_info": {
+      },
       "get": {
-        "description": "Get metadata information about this API resource",
+        "description": "Get an item model",
         "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
@@ -13333,39 +13996,44 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
+                    "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"
                     },
-                    "edit_columns": {
-                      "type": "object"
+                    "id": {
+                      "description": "The item id",
+                      "type": "string"
                     },
-                    "filters": {
+                    "label_columns": {
                       "properties": {
                         "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
+                          "description": "The label for the column name. Will be translated by babel",
+                          "example": "A Nice label for the column",
+                          "type": "string"
                         }
                       },
                       "type": "object"
                     },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
+                    "result": {
+                      "$ref": "#/components/schemas/ChartRestApi.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"
@@ -13380,6 +14048,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -13392,24 +14063,31 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Get a chart detail information",
         "tags": [
           "Charts"
         ]
-      }
-    },
-    "/api/v1/chart/data": {
-      "post": {
-        "description": "Takes a query context constructed in the client and returns payload data response for the given query.",
+      },
+      "put": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/ChartDataQueryContextSchema"
+                "$ref": "#/components/schemas/ChartRestApi.put"
               }
             }
           },
-          "description": "A query context consists of a datasource from which to fetch data and one or many query objects.",
+          "description": "Chart schema",
           "required": true
         },
         "responses": {
@@ -13417,21 +14095,19 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartDataResponseSchema"
-                }
-              }
-            },
-            "description": "Query result"
-          },
-          "202": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/ChartDataAsyncResponseSchema"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/ChartRestApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Async job details"
+            "description": "Chart changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13439,6 +14115,15 @@
           "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"
           }
@@ -13448,23 +14133,33 @@
             "jwt": []
           }
         ],
-        "summary": "Return payload data response for the given query",
+        "summary": "Update a chart",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/data/{cache_key}": {
+    "/api/v1/chart/{pk}/cache_screenshot/": {
       "get": {
-        "description": "Takes a query context cache key and returns payload data response for the given query.",
         "parameters": [
           {
             "in": "path",
-            "name": "cache_key",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/screenshot_query_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -13472,11 +14167,21 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartDataResponseSchema"
+                  "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema"
                 }
               }
             },
-            "description": "Query result"
+            "description": "Chart async result"
+          },
+          "202": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema"
+                }
+              }
+            },
+            "description": "Chart screenshot task created"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13487,9 +14192,6 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -13499,38 +14201,70 @@
             "jwt": []
           }
         ],
-        "summary": "Return payload data response for the given query",
+        "summary": "Compute and cache a screenshot",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/export/": {
+    "/api/v1/chart/{pk}/data/": {
       "get": {
+        "description": "Takes a chart ID and uses the query context stored when the chart was saved to return payload data response.",
         "parameters": [
           {
+            "description": "The chart ID",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "The format in which the data should be returned",
+            "in": "query",
+            "name": "format",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "The type in which the data should be returned",
+            "in": "query",
+            "name": "type",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Should the queries be forced to load from the source",
+            "in": "query",
+            "name": "force",
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_export_ids_schema"
+                  "$ref": "#/components/schemas/ChartDataResponseSchema"
                 }
               }
             },
-            "in": "query",
-            "name": "q"
-          }
-        ],
-        "responses": {
-          "200": {
+            "description": "Query result"
+          },
+          "202": {
             "content": {
-              "application/zip": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "$ref": "#/components/schemas/ChartDataAsyncResponseSchema"
                 }
               }
             },
-            "description": "A zip file with chart(s), dataset(s) and database(s) as YAML"
+            "description": "Async job details"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13538,9 +14272,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -13550,25 +14281,22 @@
             "jwt": []
           }
         ],
-        "summary": "Download multiple charts as YAML files",
+        "summary": "Return payload data response for a chart",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/favorite_status/": {
-      "get": {
+    "/api/v1/chart/{pk}/favorites/": {
+      "delete": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_fav_star_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -13576,14 +14304,16 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GetFavStarIdsSchema"
+                  "properties": {
+                    "result": {
+                      "type": "object"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "None"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Chart removed from favorites"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -13600,75 +14330,43 @@
             "jwt": []
           }
         ],
-        "summary": "Check favorited charts for current user",
+        "summary": "Remove the chart from the user favorite list",
         "tags": [
           "Charts"
         ]
-      }
-    },
-    "/api/v1/chart/import/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "properties": {
-                  "formData": {
-                    "description": "upload file (ZIP)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "overwrite": {
-                    "description": "overwrite existing charts?",
-                    "type": "boolean"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              }
+      },
+      "post": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
-          },
-          "required": true
-        },
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "type": "object"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Chart import result"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Chart added to favorites"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -13679,46 +14377,43 @@
             "jwt": []
           }
         ],
-        "summary": "Import chart(s) with associated datasets and databases",
+        "summary": "Mark the chart as favorite for the current user",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/related/{column_name}": {
+    "/api/v1/chart/{pk}/screenshot/{digest}/": {
       "get": {
-        "description": "Get a list of all possible owners for a chart. Use `owners` has the `column_name` parameter",
         "parameters": [
           {
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           },
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "digest",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "image/*": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "Chart screenshot image"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13738,40 +14433,55 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Get a computed screenshot from cache",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/warm_up_cache": {
-      "put": {
-        "description": "Warms up the cache for the chart. Note for slices a force refresh occurs. In terms of the `extra_filters` these can be obtained from records in the JSON encoded `logs.json` column associated with the `explore_json` action.",
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ChartCacheWarmUpRequestSchema"
-              }
+    "/api/v1/chart/{pk}/thumbnail/{digest}/": {
+      "get": {
+        "description": "Compute or get already computed chart thumbnail from cache.",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
           },
-          "description": "Identifies the chart to warm up cache for, and any additional dashboard or filter context to use.",
-          "required": true
-        },
+          {
+            "description": "A hex digest that makes this chart unique",
+            "in": "path",
+            "name": "digest",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "image/*": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartCacheWarmUpResponseSchema"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Each chart's warmup status"
+            "description": "Chart thumbnail image"
+          },
+          "302": {
+            "description": "Redirects to the current digest"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -13784,22 +14494,25 @@
             "jwt": []
           }
         ],
-        "summary": "Warm up the cache for the chart",
+        "summary": "Get chart thumbnail",
         "tags": [
           "Charts"
         ]
       }
     },
-    "/api/v1/chart/{pk}": {
+    "/api/v1/css_template/": {
       "delete": {
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -13816,14 +14529,11 @@
                 }
               }
             },
-            "description": "Chart delete"
+            "description": "CSS templates bulk delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -13839,27 +14549,19 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a chart",
+        "summary": "Bulk delete CSS templates",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       },
       "get": {
-        "description": "Get an item model",
+        "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": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -13873,6 +14575,10 @@
               "application/json": {
                 "schema": {
                   "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -13883,9 +14589,12 @@
                       },
                       "type": "object"
                     },
-                    "id": {
-                      "description": "The item id",
-                      "type": "string"
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     },
                     "label_columns": {
                       "properties": {
@@ -13897,27 +14606,38 @@
                       },
                       "type": "object"
                     },
-                    "result": {
-                      "$ref": "#/components/schemas/ChartRestApi.get"
-                    },
-                    "show_columns": {
+                    "list_columns": {
                       "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "show_title": {
+                    "list_title": {
                       "description": "A title to render. Will be translated by babel",
-                      "example": "Show Item Details",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/CssTemplateRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13925,9 +14645,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -13940,51 +14657,41 @@
             "jwt": []
           }
         ],
-        "summary": "Get a chart detail information",
+        "summary": "Get a list of CSS templates",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/ChartRestApi.put"
+                "$ref": "#/components/schemas/CssTemplateRestApi.post"
               }
             }
           },
-          "description": "Chart schema",
+          "description": "Model schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
                     "id": {
-                      "type": "number"
+                      "type": "string"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/ChartRestApi.put"
+                      "$ref": "#/components/schemas/CssTemplateRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Chart changed"
+            "description": "Item inserted"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -13992,12 +14699,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -14010,28 +14711,21 @@
             "jwt": []
           }
         ],
-        "summary": "Update a chart",
+        "summary": "Create a CSS template",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       }
     },
-    "/api/v1/chart/{pk}/cache_screenshot/": {
+    "/api/v1/css_template/_info": {
       "get": {
+        "description": "Get metadata information about this API resource",
         "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/screenshot_query_schema"
+                  "$ref": "#/components/schemas/get_info_schema"
                 }
               }
             },
@@ -14040,15 +14734,51 @@
           }
         ],
         "responses": {
-          "202": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema"
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Chart async result"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14056,8 +14786,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -14068,70 +14798,45 @@
             "jwt": []
           }
         ],
-        "summary": "Compute and cache a screenshot",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       }
     },
-    "/api/v1/chart/{pk}/data/": {
+    "/api/v1/css_template/related/{column_name}": {
       "get": {
-        "description": "Takes a chart ID and uses the query context stored when the chart was saved to return payload data response.",
         "parameters": [
           {
-            "description": "The chart ID",
             "in": "path",
-            "name": "pk",
+            "name": "column_name",
             "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The format in which the data should be returned",
-            "in": "query",
-            "name": "format",
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "The type in which the data should be returned",
-            "in": "query",
-            "name": "type",
             "schema": {
               "type": "string"
             }
           },
           {
-            "description": "Should the queries be forced to load from the source",
-            "in": "query",
-            "name": "force",
-            "schema": {
-              "type": "boolean"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartDataResponseSchema"
+                  "$ref": "#/components/schemas/get_related_schema"
                 }
               }
             },
-            "description": "Query result"
-          },
-          "202": {
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ChartDataAsyncResponseSchema"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "Async job details"
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14139,6 +14844,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -14148,13 +14856,13 @@
             "jwt": []
           }
         ],
-        "summary": "Return payload data response for a chart",
+        "summary": "Get related fields data",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       }
     },
-    "/api/v1/chart/{pk}/favorites/": {
+    "/api/v1/css_template/{pk}": {
       "delete": {
         "parameters": [
           {
@@ -14172,22 +14880,22 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "type": "object"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Chart removed from favorites"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
+            "description": "Item deleted"
           },
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -14197,12 +14905,13 @@
             "jwt": []
           }
         ],
-        "summary": "Remove the chart from the user favorite list",
+        "summary": "Delete a CSS template",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       },
-      "post": {
+      "get": {
+        "description": "Get an item model",
         "parameters": [
           {
             "in": "path",
@@ -14211,76 +14920,70 @@
             "schema": {
               "type": "integer"
             }
-          }
-        ],
-        "responses": {
-          "200": {
+          },
+          {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "type": "object"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
-            "description": "Chart added to favorites"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
-          "500": {
-            "$ref": "#/components/responses/500"
-          }
-        },
-        "security": [
-          {
-            "jwt": []
-          }
-        ],
-        "summary": "Mark the chart as favorite for the current user",
-        "tags": [
-          "Charts"
-        ]
-      }
-    },
-    "/api/v1/chart/{pk}/screenshot/{digest}/": {
-      "get": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "in": "path",
-            "name": "digest",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "image/*": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "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/CssTemplateRestApi.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": "Chart thumbnail image"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14291,6 +14994,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -14300,15 +15006,12 @@
             "jwt": []
           }
         ],
-        "summary": "Get a computed screenshot from cache",
+        "summary": "Get a CSS template",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
-      }
-    },
-    "/api/v1/chart/{pk}/thumbnail/{digest}/": {
-      "get": {
-        "description": "Compute or get already computed chart thumbnail from cache.",
+      },
+      "put": {
         "parameters": [
           {
             "in": "path",
@@ -14317,30 +15020,34 @@
             "schema": {
               "type": "integer"
             }
-          },
-          {
-            "in": "path",
-            "name": "digest",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/CssTemplateRestApi.put"
+              }
+            }
+          },
+          "description": "Model schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
-              "image/*": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "properties": {
+                    "result": {
+                      "$ref": "#/components/schemas/CssTemplateRestApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Chart thumbnail image"
-          },
-          "302": {
-            "description": "Redirects to the current digest"
+            "description": "Item changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14351,6 +15058,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -14360,13 +15070,13 @@
             "jwt": []
           }
         ],
-        "summary": "Get chart thumbnail",
+        "summary": "Update a CSS template",
         "tags": [
-          "Charts"
+          "CSS Templates"
         ]
       }
     },
-    "/api/v1/css_template/": {
+    "/api/v1/dashboard/": {
       "delete": {
         "parameters": [
           {
@@ -14395,11 +15105,14 @@
                 }
               }
             },
-            "description": "CSS templates bulk delete"
+            "description": "Dashboard bulk delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -14415,13 +15128,13 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete CSS templates",
+        "summary": "Bulk delete dashboards",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
       },
       "get": {
-        "description": "Gets 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 dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
           {
             "content": {
@@ -14494,7 +15207,148 @@
                     "result": {
                       "description": "The result from the get list query",
                       "items": {
-                        "$ref": "#/components/schemas/CssTemplateRestApi.get_list"
+                        "$ref": "#/components/schemas/DashboardRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Items from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get a list of dashboards",
+        "tags": [
+          "Dashboards"
+        ]
+      },
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DashboardRestApi.post"
+              }
+            }
+          },
+          "description": "Dashboard schema",
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DashboardRestApi.post"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Dashboard added"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Create a new dashboard",
+        "tags": [
+          "Dashboards"
+        ]
+      }
+    },
+    "/api/v1/dashboard/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
                       },
                       "type": "array"
                     }
@@ -14503,7 +15357,110 @@
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Item from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get metadata information about this API resource",
+        "tags": [
+          "Dashboards"
+        ]
+      }
+    },
+    "/api/v1/dashboard/export/": {
+      "get": {
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_export_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            },
+            "description": "Dashboard export"
+          },
+          "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": "Download multiple dashboards as YAML files",
+        "tags": [
+          "Dashboards"
+        ]
+      }
+    },
+    "/api/v1/dashboard/favorite_status/": {
+      "get": {
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_fav_star_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GetFavStarIdsSchema"
+                }
+              }
+            },
+            "description": "None"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14511,8 +15468,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -14523,41 +15480,66 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of CSS templates",
+        "summary": "Check favorited dashboards for current user",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
-      },
+      }
+    },
+    "/api/v1/dashboard/import/": {
       "post": {
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/CssTemplateRestApi.post"
+                "properties": {
+                  "formData": {
+                    "description": "upload file (ZIP or JSON)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "overwrite": {
+                    "description": "overwrite existing dashboards?",
+                    "type": "boolean"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
               }
             }
           },
-          "description": "Model schema",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
+                    "message": {
                       "type": "string"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/CssTemplateRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item inserted"
+            "description": "Dashboard import result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14577,26 +15559,22 @@
             "jwt": []
           }
         ],
-        "summary": "Create a CSS template",
+        "summary": "Import dashboard(s) with associated charts/datasets/databases",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
       }
     },
-    "/api/v1/css_template/_info": {
+    "/api/v1/dashboard/permalink/{key}": {
       "get": {
-        "description": "Get metadata information about this API resource",
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
@@ -14605,46 +15583,16 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
-                      "type": "object"
-                    },
-                    "edit_columns": {
-                      "type": "object"
-                    },
-                    "filters": {
-                      "properties": {
-                        "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
-                        }
-                      },
+                    "state": {
+                      "description": "The stored state",
                       "type": "object"
-                    },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Returns the stored state."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14652,6 +15600,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -14664,14 +15615,15 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Get dashboard's permanent link state",
         "tags": [
-          "CSS Templates"
+          "Dashboard Permanent Link"
         ]
       }
     },
-    "/api/v1/css_template/related/{column_name}": {
+    "/api/v1/dashboard/related/{column_name}": {
       "get": {
+        "description": "Get a list of all possible owners for a dashboard.",
         "parameters": [
           {
             "in": "path",
@@ -14724,19 +15676,20 @@
         ],
         "summary": "Get related fields data",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
       }
     },
-    "/api/v1/css_template/{pk}": {
-      "delete": {
+    "/api/v1/dashboard/{id_or_slug}": {
+      "get": {
         "parameters": [
           {
+            "description": "Either the id of the dashboard, or its slug",
             "in": "path",
-            "name": "pk",
+            "name": "id_or_slug",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
           }
         ],
@@ -14746,24 +15699,27 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/DashboardGetResponseSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item deleted"
+            "description": "Dashboard"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "400": {
+            "$ref": "#/components/responses/400"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "401": {
+            "$ref": "#/components/responses/401"
           },
-          "500": {
-            "$ref": "#/components/responses/500"
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
           }
         },
         "security": [
@@ -14771,85 +15727,108 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a CSS template",
+        "summary": "Get a dashboard detail information",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
-      },
+      }
+    },
+    "/api/v1/dashboard/{id_or_slug}/charts": {
       "get": {
-        "description": "Get an item model",
         "parameters": [
           {
             "in": "path",
-            "name": "pk",
+            "name": "id_or_slug",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
-          },
-          {
+          }
+        ],
+        "responses": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "properties": {
+                    "result": {
+                      "items": {
+                        "$ref": "#/components/schemas/ChartEntityResponseSchema"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "in": "query",
-            "name": "q"
+            "description": "Dashboard chart definitions"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get a dashboard's chart definitions.",
+        "tags": [
+          "Dashboards"
+        ]
+      }
+    },
+    "/api/v1/dashboard/{id_or_slug}/copy/": {
+      "post": {
+        "parameters": [
+          {
+            "description": "The dashboard id or slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DashboardCopySchema"
+              }
+            }
+          },
+          "required": true
+        },
         "responses": {
           "200": {
-            "content": {
-              "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"
-                    },
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
                     "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/CssTemplateRestApi.get"
-                    },
-                    "show_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                      "type": "number"
                     },
-                    "show_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "Show Item Details",
-                      "type": "string"
+                    "last_modified_time": {
+                      "type": "number"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Id of new dashboard and last modified time"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14857,12 +15836,12 @@
           "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"
           }
@@ -14872,33 +15851,26 @@
             "jwt": []
           }
         ],
-        "summary": "Get a CSS template",
+        "summary": "Create a copy of an existing dashboard",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
-      },
-      "put": {
+      }
+    },
+    "/api/v1/dashboard/{id_or_slug}/datasets": {
+      "get": {
+        "description": "Returns a list of a dashboard's datasets. Each dataset includes only the information necessary to render the dashboard's charts.",
         "parameters": [
           {
+            "description": "Either the id of the dashboard, or its slug",
             "in": "path",
-            "name": "pk",
+            "name": "id_or_slug",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/CssTemplateRestApi.put"
-              }
-            }
-          },
-          "description": "Model schema",
-          "required": true
-        },
         "responses": {
           "200": {
             "content": {
@@ -14906,14 +15878,17 @@
                 "schema": {
                   "properties": {
                     "result": {
-                      "$ref": "#/components/schemas/CssTemplateRestApi.put"
+                      "items": {
+                        "$ref": "#/components/schemas/DashboardDatasetSchema"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item changed"
+            "description": "Dashboard dataset definitions"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -14921,14 +15896,11 @@
           "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": [
@@ -14936,25 +15908,23 @@
             "jwt": []
           }
         ],
-        "summary": "Update a CSS template",
+        "summary": "Get dashboard's datasets",
         "tags": [
-          "CSS Templates"
+          "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/": {
+    "/api/v1/dashboard/{id_or_slug}/embedded": {
       "delete": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "The dashboard id or slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
@@ -14971,20 +15941,11 @@
                 }
               }
             },
-            "description": "Dashboard bulk delete"
+            "description": "Successfully removed the configuration"
           },
           "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"
           }
@@ -14994,105 +15955,98 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete dashboards",
+        "summary": "Delete a dashboard's embedded configuration",
         "tags": [
           "Dashboards"
         ]
       },
       "get": {
-        "description": "Gets a list of dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
           {
+            "description": "The dashboard id or slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
+                  "properties": {
+                    "result": {
+                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "in": "query",
-            "name": "q"
+            "description": "Result contains the embedded dashboard config"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get the dashboard's embedded configuration",
+        "tags": [
+          "Dashboards"
+        ]
+      },
+      "post": {
+        "parameters": [
+          {
+            "description": "The dashboard id or slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/EmbeddedDashboardConfig"
+              }
+            }
+          },
+          "description": "The embedded configuration to set",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
                     "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/DashboardRestApi.get_list"
-                      },
-                      "type": "array"
+                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Successfully set the configuration"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -15102,51 +16056,54 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of dashboards",
+        "summary": "Set a dashboard's embedded configuration",
         "tags": [
           "Dashboards"
         ]
       },
-      "post": {
+      "put": {
+        "description": "Sets a dashboard's embedded configuration.",
+        "parameters": [
+          {
+            "description": "The dashboard id or slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/DashboardRestApi.post"
+                "$ref": "#/components/schemas/EmbeddedDashboardConfig"
               }
             }
           },
-          "description": "Dashboard schema",
+          "description": "The embedded configuration to set",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
                     "result": {
-                      "$ref": "#/components/schemas/DashboardRestApi.post"
+                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard added"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Successfully set the configuration"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -15156,26 +16113,23 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new dashboard",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/_info": {
+    "/api/v1/dashboard/{id_or_slug}/tabs": {
       "get": {
-        "description": "Get metadata information about this API resource",
+        "description": "Returns a list of a dashboard's tabs and dashboard's nested tree structure for associated tabs.",
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "Either the id of the dashboard, or its slug",
+            "in": "path",
+            "name": "id_or_slug",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
@@ -15184,46 +16138,18 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
-                      "type": "object"
-                    },
-                    "edit_columns": {
-                      "type": "object"
-                    },
-                    "filters": {
-                      "properties": {
-                        "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
-                        }
-                      },
-                      "type": "object"
-                    },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
+                    "result": {
                       "items": {
-                        "type": "string"
+                        "$ref": "#/components/schemas/TabsPayloadSchema"
                       },
-                      "type": "array"
+                      "type": "object"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Dashboard tabs"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15231,11 +16157,11 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "403": {
+            "$ref": "#/components/responses/403"
           },
-          "500": {
-            "$ref": "#/components/responses/500"
+          "404": {
+            "$ref": "#/components/responses/404"
           }
         },
         "security": [
@@ -15243,44 +16169,46 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Get dashboard's tabs",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/export/": {
-      "get": {
+    "/api/v1/dashboard/{pk}": {
+      "delete": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_export_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "text/plain": {
+              "application/json": {
                 "schema": {
-                  "type": "string"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Dashboard export"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Dashboard deleted"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -15296,37 +16224,54 @@
             "jwt": []
           }
         ],
-        "summary": "Download multiple dashboards as YAML files",
+        "summary": "Delete a dashboard",
         "tags": [
           "Dashboards"
         ]
-      }
-    },
-    "/api/v1/dashboard/favorite_status/": {
-      "get": {
+      },
+      "put": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_fav_star_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DashboardRestApi.put"
+              }
+            }
+          },
+          "description": "Dashboard schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GetFavStarIdsSchema"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "last_modified_time": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DashboardRestApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "None"
+            "description": "Dashboard changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15334,9 +16279,15 @@
           "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"
           }
@@ -15346,66 +16297,43 @@
             "jwt": []
           }
         ],
-        "summary": "Check favorited dashboards for current user",
+        "summary": "Update a dashboard",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/import/": {
+    "/api/v1/dashboard/{pk}/cache_dashboard_screenshot/": {
       "post": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
-            "multipart/form-data": {
+            "application/json": {
               "schema": {
-                "properties": {
-                  "formData": {
-                    "description": "upload file (ZIP or JSON)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "overwrite": {
-                    "description": "overwrite existing dashboards?",
-                    "type": "boolean"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
+                "$ref": "#/components/schemas/DashboardScreenshotPostSchema"
               }
             }
-          },
-          "required": true
+          }
         },
         "responses": {
-          "200": {
+          "202": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/DashboardCacheScreenshotResponseSchema"
                 }
               }
             },
-            "description": "Dashboard import result"
+            "description": "Dashboard async result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15413,8 +16341,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -15425,40 +16353,58 @@
             "jwt": []
           }
         ],
-        "summary": "Import dashboard(s) with associated charts/datasets/databases",
+        "summary": "Compute and cache a screenshot",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/permalink/{key}": {
-      "get": {
+    "/api/v1/dashboard/{pk}/colors": {
+      "put": {
         "parameters": [
           {
             "in": "path",
-            "name": "key",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
+            }
+          },
+          {
+            "in": "query",
+            "name": "mark_updated",
+            "schema": {
+              "description": "Whether to update the dashboard changed_on field",
+              "type": "boolean"
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DashboardColorsConfigUpdateSchema"
+              }
+            }
+          },
+          "description": "Colors configuration",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "state": {
-                      "description": "The stored state",
-                      "type": "object"
+                    "result": {
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Returns the stored state."
+            "description": "Dashboard colors updated"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15466,6 +16412,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -15481,34 +16430,22 @@
             "jwt": []
           }
         ],
-        "summary": "Get dashboard's permanent link state",
+        "summary": "Update colors configuration for a dashboard.",
         "tags": [
-          "Dashboard Permanent Link"
+          "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/related/{column_name}": {
-      "get": {
-        "description": "Get a list of all possible owners for a dashboard.",
+    "/api/v1/dashboard/{pk}/favorites/": {
+      "delete": {
         "parameters": [
           {
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
         "responses": {
@@ -15516,14 +16453,16 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "properties": {
+                    "result": {
+                      "type": "object"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Related column data"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Dashboard removed from favorites"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -15540,22 +16479,19 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Remove the dashboard from the user favorite list",
         "tags": [
           "Dashboards"
         ]
-      }
-    },
-    "/api/v1/dashboard/{id_or_slug}": {
-      "get": {
+      },
+      "post": {
         "parameters": [
           {
-            "description": "Either the id of the dashboard, or its slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           }
         ],
@@ -15566,26 +16502,23 @@
                 "schema": {
                   "properties": {
                     "result": {
-                      "$ref": "#/components/schemas/DashboardGetResponseSchema"
+                      "type": "object"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Dashboard added to favorites"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
           }
         },
         "security": [
@@ -15593,42 +16526,158 @@
             "jwt": []
           }
         ],
-        "summary": "Get a dashboard detail information",
+        "summary": "Mark the dashboard as favorite for the current user",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/{id_or_slug}/charts": {
-      "get": {
+    "/api/v1/dashboard/{pk}/filter_state": {
+      "post": {
         "parameters": [
           {
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
+            }
+          },
+          {
+            "in": "query",
+            "name": "tab_id",
+            "schema": {
+              "type": "integer"
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "examples": {
+                "numerical_range_filter": {
+                  "description": "**This body should be stringified and put into the value field.**",
+                  "summary": "Numerical Range Filter",
+                  "value": {
+                    "extraFormData": {
+                      "filters": [
+                        {
+                          "col": "tz_offset",
+                          "op": ">=",
+                          "val": [
+                            1000
+                          ]
+                        },
+                        {
+                          "col": "tz_offset",
+                          "op": "<=",
+                          "val": [
+                            2000
+                          ]
+                        }
+                      ]
+                    },
+                    "filterState": {
+                      "label": "1000 <= x <= 2000",
+                      "value": [
+                        1000,
+                        2000
+                      ]
+                    },
+                    "id": "NATIVE_FILTER_ID"
+                  }
+                },
+                "time_grain_filter": {
+                  "description": "**This body should be stringified and put into the value field.**",
+                  "summary": "Time Grain Filter",
+                  "value": {
+                    "extraFormData": {
+                      "time_grain_sqla": "P1W/1970-01-03T00:00:00Z"
+                    },
+                    "filterState": {
+                      "label": "Week ending Saturday",
+                      "value": [
+                        "P1W/1970-01-03T00:00:00Z"
+                      ]
+                    },
+                    "id": "NATIVE_FILTER_ID"
+                  }
+                },
+                "time_range_filter": {
+                  "description": "**This body should be stringified and put into the value field.**",
+                  "summary": "Time Range Filter",
+                  "value": {
+                    "extraFormData": {
+                      "time_range": "DATEADD(DATETIME('2025-01-16T00:00:00'), -7, day) : 2025-01-16T00:00:00"
+                    },
+                    "filterState": {
+                      "value": "DATEADD(DATETIME('2025-01-16T00:00:00'), -7, day) : 2025-01-16T00:00:00"
+                    },
+                    "id": "NATIVE_FILTER_ID"
+                  }
+                },
+                "timecolumn_filter": {
+                  "description": "**This body should be stringified and put into the value field.**",
+                  "summary": "Time Column Filter",
+                  "value": {
+                    "extraFormData": {
+                      "granularity_sqla": "order_date"
+                    },
+                    "filterState": {
+                      "value": [
+                        "order_date"
+                      ]
+                    },
+                    "id": "NATIVE_FILTER_ID"
+                  }
+                },
+                "value_filter": {
+                  "description": "**This body should be stringified and put into the value field.**",
+                  "summary": "Value Filter",
+                  "value": {
+                    "extraFormData": {
+                      "filters": [
+                        {
+                          "col": "real_name",
+                          "op": "IN",
+                          "val": [
+                            "John Doe"
+                          ]
+                        }
+                      ]
+                    },
+                    "filterState": {
+                      "value": [
+                        "John Doe"
+                      ]
+                    },
+                    "id": "NATIVE_FILTER_ID"
+                  }
+                }
+              },
+              "schema": {
+                "$ref": "#/components/schemas/TemporaryCachePostSchema"
+              }
+            }
+          },
+          "required": true
+        },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "items": {
-                        "$ref": "#/components/schemas/ChartEntityResponseSchema"
-                      },
-                      "type": "array"
+                    "key": {
+                      "description": "The key to retrieve the value.",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard chart definitions"
+            "description": "The value was stored successfully."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15636,11 +16685,11 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "500": {
+            "$ref": "#/components/responses/500"
           }
         },
         "security": [
@@ -15648,53 +16697,49 @@
             "jwt": []
           }
         ],
-        "summary": "Get a dashboard's chart definitions.",
+        "summary": "Create a dashboard's filter state",
         "tags": [
-          "Dashboards"
+          "Dashboard Filter State"
         ]
       }
     },
-    "/api/v1/dashboard/{id_or_slug}/copy/": {
-      "post": {
+    "/api/v1/dashboard/{pk}/filter_state/{key}": {
+      "delete": {
         "parameters": [
           {
-            "description": "The dashboard id or slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "The value key.",
+            "in": "path",
+            "name": "key",
             "required": true,
             "schema": {
               "type": "string"
             }
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DashboardCopySchema"
-              }
-            }
-          },
-          "required": true
-        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
-                    "last_modified_time": {
-                      "type": "number"
+                    "message": {
+                      "description": "The result of the operation",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Id of new dashboard and last modified time"
+            "description": "Deleted the stored value."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15702,12 +16747,12 @@
           "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"
           }
@@ -15717,20 +16762,24 @@
             "jwt": []
           }
         ],
-        "summary": "Create a copy of an existing dashboard",
+        "summary": "Delete a dashboard's filter state value",
         "tags": [
-          "Dashboards"
+          "Dashboard Filter State"
         ]
-      }
-    },
-    "/api/v1/dashboard/{id_or_slug}/datasets": {
+      },
       "get": {
-        "description": "Returns a list of a dashboard's datasets. Each dataset includes only the information necessary to render the dashboard's charts.",
         "parameters": [
           {
-            "description": "Either the id of the dashboard, or its slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "in": "path",
+            "name": "key",
             "required": true,
             "schema": {
               "type": "string"
@@ -15743,18 +16792,16 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "items": {
-                        "$ref": "#/components/schemas/DashboardDatasetSchema"
-                      },
-                      "type": "array"
+                    "value": {
+                      "description": "The stored value",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard dataset definitions"
+            "description": "Returns the stored value."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -15762,11 +16809,14 @@
           "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": [
@@ -15774,32 +16824,55 @@
             "jwt": []
           }
         ],
-        "summary": "Get dashboard's datasets",
+        "summary": "Get a dashboard's filter state value",
         "tags": [
-          "Dashboards"
+          "Dashboard Filter State"
         ]
-      }
-    },
-    "/api/v1/dashboard/{id_or_slug}/embedded": {
-      "delete": {
+      },
+      "put": {
         "parameters": [
           {
-            "description": "The dashboard id or slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "in": "path",
+            "name": "key",
             "required": true,
             "schema": {
               "type": "string"
             }
+          },
+          {
+            "in": "query",
+            "name": "tab_id",
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/TemporaryCachePutSchema"
+              }
+            }
+          },
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
+                    "key": {
+                      "description": "The key to retrieve the value.",
                       "type": "string"
                     }
                   },
@@ -15807,11 +16880,20 @@
                 }
               }
             },
-            "description": "Successfully removed the configuration"
+            "description": "The value was stored successfully."
+          },
+          "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"
           }
@@ -15821,23 +16903,35 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a dashboard's embedded configuration",
+        "summary": "Update a dashboard's filter state value",
         "tags": [
-          "Dashboards"
+          "Dashboard Filter State"
         ]
-      },
-      "get": {
+      }
+    },
+    "/api/v1/dashboard/{pk}/filters": {
+      "put": {
         "parameters": [
           {
-            "description": "The dashboard id or slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DashboardNativeFiltersConfigUpdateSchema"
+              }
+            }
+          },
+          "description": "Native filters configuration",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
@@ -15845,18 +16939,30 @@
                 "schema": {
                   "properties": {
                     "result": {
-                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Result contains the embedded dashboard config"
+            "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"
           }
@@ -15866,17 +16972,18 @@
             "jwt": []
           }
         ],
-        "summary": "Get the dashboard's embedded configuration",
+        "summary": "Update native filters configuration for a dashboard.",
         "tags": [
           "Dashboards"
         ]
-      },
+      }
+    },
+    "/api/v1/dashboard/{pk}/permalink": {
       "post": {
         "parameters": [
           {
-            "description": "The dashboard id or slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
             "required": true,
             "schema": {
               "type": "string"
@@ -15886,33 +16993,149 @@
         "requestBody": {
           "content": {
             "application/json": {
+              "examples": {
+                "numerical_range_filter": {
+                  "summary": "Numerical Range Filter",
+                  "value": {
+                    "dataMask": {
+                      "extraFormData": {
+                        "filters": [
+                          {
+                            "col": "tz_offset",
+                            "op": ">=",
+                            "val": [
+                              1000
+                            ]
+                          },
+                          {
+                            "col": "tz_offset",
+                            "op": "<=",
+                            "val": [
+                              2000
+                            ]
+                          }
+                        ]
+                      },
+                      "filterState": {
+                        "label": "1000 <= x <= 200",
+                        "value": [
+                          1000,
+                          2000
+                        ]
+                      },
+                      "id": "NATIVE_FILTER_ID"
+                    }
+                  }
+                },
+                "time_grain_filter": {
+                  "summary": "Time Grain Filter",
+                  "value": {
+                    "dataMask": {
+                      "extraFormData": {
+                        "time_grain_sqla": "P1W/1970-01-03T00:00:00Z"
+                      },
+                      "filterState": {
+                        "label": "Week ending Saturday",
+                        "value": [
+                          "P1W/1970-01-03T00:00:00Z"
+                        ]
+                      },
+                      "id": "NATIVE_FILTER_ID"
+                    }
+                  }
+                },
+                "time_range_filter": {
+                  "summary": "Time Range Filter",
+                  "value": {
+                    "dataMask": {
+                      "extraFormData": {
+                        "time_range": "DATEADD(DATETIME(\"2025-01-16T00:00:00\"), -7, day) : 2025-01-16T00:00:00"
+                      },
+                      "filterState": {
+                        "value": "DATEADD(DATETIME(\"2025-01-16T00:00:00\"), -7, day) : 2025-01-16T00:00:00"
+                      },
+                      "id": "NATIVE_FILTER_ID"
+                    }
+                  }
+                },
+                "timecolumn_filter": {
+                  "summary": "Time Column Filter",
+                  "value": {
+                    "dataMask": {
+                      "extraFormData": {
+                        "granularity_sqla": "order_date"
+                      },
+                      "filterState": {
+                        "value": [
+                          "order_date"
+                        ]
+                      },
+                      "id": "NATIVE_FILTER_ID"
+                    }
+                  }
+                },
+                "value_filter": {
+                  "summary": "Value Filter",
+                  "value": {
+                    "dataMask": {
+                      "extraFormData": {
+                        "filters": [
+                          {
+                            "col": "real_name",
+                            "op": "IN",
+                            "val": [
+                              "John Doe"
+                            ]
+                          }
+                        ]
+                      },
+                      "filterState": {
+                        "value": [
+                          "John Doe"
+                        ]
+                      },
+                      "id": "NATIVE_FILTER_ID"
+                    }
+                  }
+                }
+              },
               "schema": {
-                "$ref": "#/components/schemas/EmbeddedDashboardConfig"
+                "$ref": "#/components/schemas/DashboardPermalinkStateSchema"
               }
             }
           },
-          "description": "The embedded configuration to set",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
+                    "key": {
+                      "description": "The key to retrieve the permanent link data.",
+                      "type": "string"
+                    },
+                    "url": {
+                      "description": "permanent link.",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Successfully set the configuration"
+            "description": "The permanent link was stored successfully."
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -15922,54 +17145,64 @@
             "jwt": []
           }
         ],
-        "summary": "Set a dashboard's embedded configuration",
+        "summary": "Create a new dashboard's permanent link",
         "tags": [
-          "Dashboards"
+          "Dashboard Permanent Link"
         ]
-      },
-      "put": {
-        "description": "Sets a dashboard's embedded configuration.",
+      }
+    },
+    "/api/v1/dashboard/{pk}/screenshot/{digest}/": {
+      "get": {
         "parameters": [
           {
-            "description": "The dashboard id or slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "in": "path",
+            "name": "digest",
             "required": true,
             "schema": {
               "type": "string"
             }
+          },
+          {
+            "in": "query",
+            "name": "download_format",
+            "schema": {
+              "enum": [
+                "png",
+                "pdf"
+              ],
+              "type": "string"
+            }
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/EmbeddedDashboardConfig"
-              }
-            }
-          },
-          "description": "The embedded configuration to set",
-          "required": true
-        },
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "image/*": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
-                    }
-                  },
-                  "type": "object"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Successfully set the configuration"
+            "description": "Dashboard thumbnail image"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -15979,19 +17212,28 @@
             "jwt": []
           }
         ],
+        "summary": "Get a computed screenshot from cache",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/{id_or_slug}/tabs": {
+    "/api/v1/dashboard/{pk}/thumbnail/{digest}/": {
       "get": {
-        "description": "Returns a list of a dashboard's tabs and dashboard's nested tree structure for associated tabs.",
+        "description": "Computes async or get already computed dashboard thumbnail from cache.",
         "parameters": [
           {
-            "description": "Either the id of the dashboard, or its slug",
             "in": "path",
-            "name": "id_or_slug",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "A hex digest that makes this dashboard unique",
+            "in": "path",
+            "name": "digest",
             "required": true,
             "schema": {
               "type": "string"
@@ -16000,34 +17242,45 @@
         ],
         "responses": {
           "200": {
+            "content": {
+              "image/*": {
+                "schema": {
+                  "format": "binary",
+                  "type": "string"
+                }
+              }
+            },
+            "description": "Dashboard thumbnail image"
+          },
+          "202": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "items": {
-                        "$ref": "#/components/schemas/TabsPayloadSchema"
-                      },
-                      "type": "object"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard tabs"
+            "description": "Thumbnail does not exist on cache, fired async to compute"
           },
-          "400": {
-            "$ref": "#/components/responses/400"
+          "302": {
+            "description": "Redirects to the current digest"
           },
           "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": [
@@ -16035,22 +17288,26 @@
             "jwt": []
           }
         ],
-        "summary": "Get dashboard's tabs",
+        "summary": "Get dashboard's thumbnail",
         "tags": [
           "Dashboards"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}": {
-      "delete": {
+    "/api/v1/database/": {
+      "get": {
+        "description": "Gets a list of databases, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -16059,25 +17316,76 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/DatabaseRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard deleted"
+            "description": "Items from Model"
+          },
+          "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"
           },
@@ -16090,35 +17398,25 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a dashboard",
+        "summary": "Get a list of databases",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/DashboardRestApi.put"
+                "$ref": "#/components/schemas/DatabaseRestApi.post"
               }
             }
           },
-          "description": "Dashboard schema",
+          "description": "Database schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
@@ -16126,18 +17424,15 @@
                     "id": {
                       "type": "number"
                     },
-                    "last_modified_time": {
-                      "type": "number"
-                    },
                     "result": {
-                      "$ref": "#/components/schemas/DashboardRestApi.put"
+                      "$ref": "#/components/schemas/DatabaseRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard changed"
+            "description": "Database added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16145,15 +17440,9 @@
           "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"
           }
@@ -16163,43 +17452,74 @@
             "jwt": []
           }
         ],
-        "summary": "Update a dashboard",
+        "summary": "Create a new database",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/cache_dashboard_screenshot/": {
-      "post": {
+    "/api/v1/database/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DashboardScreenshotPostSchema"
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
               }
-            }
+            },
+            "in": "query",
+            "name": "q"
           }
-        },
+        ],
         "responses": {
-          "202": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DashboardCacheScreenshotResponseSchema"
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Dashboard async result"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16207,8 +17527,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -16219,45 +17539,77 @@
             "jwt": []
           }
         ],
-        "summary": "Compute and cache a screenshot",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/favorites/": {
-      "delete": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+    "/api/v1/database/available/": {
+      "get": {
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "type": "object"
-                    }
+                  "items": {
+                    "properties": {
+                      "available_drivers": {
+                        "description": "Installed drivers for the engine",
+                        "items": {
+                          "type": "string"
+                        },
+                        "type": "array"
+                      },
+                      "default_driver": {
+                        "description": "Default driver for the engine",
+                        "type": "string"
+                      },
+                      "engine": {
+                        "description": "Name of the SQLAlchemy engine",
+                        "type": "string"
+                      },
+                      "engine_information": {
+                        "description": "Dict with public properties form the DB Engine",
+                        "properties": {
+                          "disable_ssh_tunneling": {
+                            "description": "Whether the engine supports SSH Tunnels",
+                            "type": "boolean"
+                          },
+                          "supports_file_upload": {
+                            "description": "Whether the engine supports file uploads",
+                            "type": "boolean"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "name": {
+                        "description": "Name of the database",
+                        "type": "string"
+                      },
+                      "parameters": {
+                        "description": "JSON schema defining the needed parameters",
+                        "type": "object"
+                      },
+                      "preferred": {
+                        "description": "Is the database preferred?",
+                        "type": "boolean"
+                      },
+                      "sqlalchemy_uri_placeholder": {
+                        "description": "Example placeholder for the SQLAlchemy URI",
+                        "type": "string"
+                      }
+                    },
+                    "type": "object"
                   },
-                  "type": "object"
+                  "type": "array"
                 }
               }
             },
-            "description": "Dashboard removed from favorites"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
+            "description": "Database names"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -16268,37 +17620,38 @@
             "jwt": []
           }
         ],
-        "summary": "Remove the dashboard from the user favorite list",
+        "summary": "Get names of databases currently available",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
-      },
-      "post": {
+      }
+    },
+    "/api/v1/database/export/": {
+      "get": {
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_export_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "application/zip": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "type": "object"
-                    }
-                  },
-                  "type": "object"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Dashboard added to favorites"
+            "description": "A zip file with database(s) and dataset(s) as YAML"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -16315,49 +17668,58 @@
             "jwt": []
           }
         ],
-        "summary": "Mark the dashboard as favorite for the current user",
+        "summary": "Download database(s) and associated dataset(s) as a zip file",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/filter_state": {
+    "/api/v1/database/import/": {
       "post": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "in": "query",
-            "name": "tab_id",
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/TemporaryCachePostSchema"
+                "properties": {
+                  "formData": {
+                    "description": "upload file (ZIP)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "overwrite": {
+                    "description": "overwrite existing databases?",
+                    "type": "boolean"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
               }
             }
           },
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the value.",
+                    "message": {
                       "type": "string"
                     }
                   },
@@ -16365,7 +17727,7 @@
                 }
               }
             },
-            "description": "The value was stored successfully."
+            "description": "Database import result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16385,28 +17747,40 @@
             "jwt": []
           }
         ],
-        "summary": "Create a dashboard's filter state",
+        "summary": "Import database(s) with associated datasets",
         "tags": [
-          "Dashboard Filter State"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/filter_state/{key}": {
-      "delete": {
+    "/api/v1/database/oauth2/": {
+      "get": {
+        "description": "-> Receive and store personal access tokens from OAuth for user-level authorization",
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
+            "in": "query",
+            "name": "state",
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
           },
           {
-            "description": "The value key.",
-            "in": "path",
-            "name": "key",
-            "required": true,
+            "in": "query",
+            "name": "code",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "query",
+            "name": "scope",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "query",
+            "name": "error",
             "schema": {
               "type": "string"
             }
@@ -16415,32 +17789,20 @@
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "text/html": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "description": "The result of the operation",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "type": "string"
                 }
               }
             },
-            "description": "Deleted the stored value."
+            "description": "A dummy self-closing HTML page"
           },
           "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"
           }
@@ -16450,28 +17812,33 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a dashboard's filter state value",
+        "summary": "Receive personal access tokens from OAuth2",
         "tags": [
-          "Dashboard Filter State"
+          "Database"
         ]
-      },
+      }
+    },
+    "/api/v1/database/related/{column_name}": {
       "get": {
         "parameters": [
           {
             "in": "path",
-            "name": "pk",
+            "name": "column_name",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
           },
           {
-            "in": "path",
-            "name": "key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -16479,17 +17846,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "value": {
-                      "description": "The stored value",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "Returns the stored value."
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16500,9 +17861,6 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -16512,45 +17870,23 @@
             "jwt": []
           }
         ],
-        "summary": "Get a dashboard's filter state value",
+        "summary": "Get related fields data",
         "tags": [
-          "Dashboard Filter State"
+          "Database"
         ]
-      },
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "in": "path",
-            "name": "key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "in": "query",
-            "name": "tab_id",
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      }
+    },
+    "/api/v1/database/test_connection/": {
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/TemporaryCachePutSchema"
+                "$ref": "#/components/schemas/DatabaseTestConnectionSchema"
               }
             }
           },
+          "description": "Database schema",
           "required": true
         },
         "responses": {
@@ -16559,8 +17895,7 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the value.",
+                    "message": {
                       "type": "string"
                     }
                   },
@@ -16568,17 +17903,11 @@
                 }
               }
             },
-            "description": "The value was stored successfully."
+            "description": "Database Test Connection"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -16591,33 +17920,22 @@
             "jwt": []
           }
         ],
-        "summary": "Update a dashboard's filter state value",
+        "summary": "Test a database connection",
         "tags": [
-          "Dashboard Filter State"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/filters": {
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+    "/api/v1/database/upload_metadata/": {
+      "post": {
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/DashboardNativeFiltersConfigUpdateSchema"
+                "$ref": "#/components/schemas/UploadFileMetadataPostSchema"
               }
             }
           },
-          "description": "Native filters configuration",
           "required": true
         },
         "responses": {
@@ -16627,14 +17945,14 @@
                 "schema": {
                   "properties": {
                     "result": {
-                      "type": "array"
+                      "$ref": "#/components/schemas/UploadFileMetadata"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dashboard native filters updated"
+            "description": "Upload response"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16642,15 +17960,9 @@
           "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"
           }
@@ -16660,46 +17972,32 @@
             "jwt": []
           }
         ],
-        "summary": "Update native filters configuration for a dashboard.",
+        "summary": "Upload a file and returns file metadata",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/permalink": {
+    "/api/v1/database/validate_parameters/": {
       "post": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/DashboardPermalinkStateSchema"
+                "$ref": "#/components/schemas/DatabaseValidateParametersSchema"
               }
             }
           },
+          "description": "DB-specific parameters",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the permanent link data.",
-                      "type": "string"
-                    },
-                    "url": {
-                      "description": "permanent link.",
+                    "message": {
                       "type": "string"
                     }
                   },
@@ -16707,14 +18005,11 @@
                 }
               }
             },
-            "description": "The permanent link was stored successfully."
+            "description": "Database Test Connection"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -16727,14 +18022,14 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new dashboard's permanent link",
+        "summary": "Validate database connection parameters",
         "tags": [
-          "Dashboard Permanent Link"
+          "Database"
         ]
       }
     },
-    "/api/v1/dashboard/{pk}/screenshot/{digest}/": {
-      "get": {
+    "/api/v1/database/{pk}": {
+      "delete": {
         "parameters": [
           {
             "in": "path",
@@ -16743,37 +18038,36 @@
             "schema": {
               "type": "integer"
             }
-          },
-          {
-            "in": "path",
-            "name": "digest",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "image/*": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Dashboard thumbnail image"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Database deleted"
           },
           "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"
           }
@@ -16783,81 +18077,40 @@
             "jwt": []
           }
         ],
-        "summary": "Get a computed screenshot from cache",
+        "summary": "Delete a database",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
-      }
-    },
-    "/api/v1/dashboard/{pk}/thumbnail/{digest}/": {
+      },
       "get": {
-        "description": "Computes async or get already computed dashboard thumbnail from cache.",
         "parameters": [
           {
+            "description": "The database id",
             "in": "path",
             "name": "pk",
             "required": true,
             "schema": {
               "type": "integer"
             }
-          },
-          {
-            "description": "A hex digest that makes this dashboard unique",
-            "in": "path",
-            "name": "digest",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/thumbnail_query_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
         "responses": {
           "200": {
-            "content": {
-              "image/*": {
-                "schema": {
-                  "format": "binary",
-                  "type": "string"
-                }
-              }
-            },
-            "description": "Dashboard thumbnail image"
-          },
-          "202": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
                   "type": "object"
                 }
               }
             },
-            "description": "Thumbnail does not exist on cache, fired async to compute"
+            "description": "Database"
           },
-          "302": {
-            "description": "Redirects to the current digest"
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -16870,97 +18123,51 @@
             "jwt": []
           }
         ],
-        "summary": "Get dashboard's thumbnail",
+        "summary": "Get a database",
         "tags": [
-          "Dashboards"
+          "Database"
         ]
-      }
-    },
-    "/api/v1/database/": {
-      "get": {
-        "description": "Gets a list of databases, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
+      },
+      "put": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DatabaseRestApi.put"
+              }
+            }
+          },
+          "description": "Database schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
+                    "id": {
                       "type": "number"
                     },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
                     "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/DatabaseRestApi.get_list"
-                      },
-                      "type": "array"
+                      "$ref": "#/components/schemas/DatabaseRestApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Database changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -16968,6 +18175,12 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -16980,41 +18193,46 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of databases",
+        "summary": "Change a database",
         "tags": [
           "Database"
         ]
-      },
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatabaseRestApi.post"
-              }
+      }
+    },
+    "/api/v1/database/{pk}/catalogs/": {
+      "get": {
+        "parameters": [
+          {
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
           },
-          "description": "Database schema",
-          "required": true
-        },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/database_catalogs_query_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "id": {
-                      "type": "number"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/DatabaseRestApi.post"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/CatalogsResponseSchema"
                 }
               }
             },
-            "description": "Database added"
+            "description": "A List of all catalogs from the database"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17034,26 +18252,23 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new database",
+        "summary": "Get all catalogs from a database",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/_info": {
+    "/api/v1/database/{pk}/connection": {
       "get": {
-        "description": "Get metadata information about this API resource",
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -17061,47 +18276,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "add_columns": {
-                      "type": "object"
-                    },
-                    "edit_columns": {
-                      "type": "object"
-                    },
-                    "filters": {
-                      "properties": {
-                        "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
-                        }
-                      },
-                      "type": "object"
-                    },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/DatabaseConnectionSchema"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Database with connection info"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17121,77 +18300,40 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Get a database connection info",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/available/": {
+    "/api/v1/database/{pk}/function_names/": {
       "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "items": {
-                    "properties": {
-                      "available_drivers": {
-                        "description": "Installed drivers for the engine",
-                        "items": {
-                          "type": "string"
-                        },
-                        "type": "array"
-                      },
-                      "default_driver": {
-                        "description": "Default driver for the engine",
-                        "type": "string"
-                      },
-                      "engine": {
-                        "description": "Name of the SQLAlchemy engine",
-                        "type": "string"
-                      },
-                      "engine_information": {
-                        "description": "Dict with public properties form the DB Engine",
-                        "properties": {
-                          "disable_ssh_tunneling": {
-                            "description": "Whether the engine supports SSH Tunnels",
-                            "type": "boolean"
-                          },
-                          "supports_file_upload": {
-                            "description": "Whether the engine supports file uploads",
-                            "type": "boolean"
-                          }
-                        },
-                        "type": "object"
-                      },
-                      "name": {
-                        "description": "Name of the database",
-                        "type": "string"
-                      },
-                      "parameters": {
-                        "description": "JSON schema defining the needed parameters",
-                        "type": "object"
-                      },
-                      "preferred": {
-                        "description": "Is the database preferred?",
-                        "type": "boolean"
-                      },
-                      "sqlalchemy_uri_placeholder": {
-                        "description": "Example placeholder for the SQLAlchemy URI",
-                        "type": "string"
-                      }
-                    },
-                    "type": "object"
-                  },
-                  "type": "array"
+                  "$ref": "#/components/schemas/DatabaseFunctionNamesResponse"
                 }
               }
             },
-            "description": "Database names"
+            "description": "Query result"
           },
-          "400": {
-            "$ref": "#/components/responses/400"
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -17202,39 +18344,90 @@
             "jwt": []
           }
         ],
-        "summary": "Get names of databases currently available",
+        "summary": "Get function names supported by a database",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/columnar_metadata/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "$ref": "#/components/schemas/ColumnarMetadataUploadFilePostSchema"
+    "/api/v1/database/{pk}/related_objects/": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/DatabaseRelatedObjectsResponse"
+                }
               }
+            },
+            "description": "Query result"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Get charts and dashboards count associated to a database",
+        "tags": [
+          "Database"
+        ]
+      }
+    },
+    "/api/v1/database/{pk}/schemas/": {
+      "get": {
+        "parameters": [
+          {
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
           },
-          "required": true
-        },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/database_schemas_query_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/UploadFileMetadata"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/SchemasResponseSchema"
                 }
               }
             },
-            "description": "Columnar upload response"
+            "description": "A List of all schemas from the database"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17254,42 +18447,34 @@
             "jwt": []
           }
         ],
-        "summary": "Upload a Columnar file and returns file metadata",
+        "summary": "Get all schemas from a database",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/csv_metadata/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "$ref": "#/components/schemas/CSVMetadataUploadFilePostSchema"
-              }
+    "/api/v1/database/{pk}/schemas_access_for_file_upload/": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
-          },
-          "required": true
-        },
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/UploadFileMetadata"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/DatabaseSchemaAccessForFileUploadResponse"
                 }
               }
             },
-            "description": "Columnar upload response"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "The list of the database schemas where to upload information"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -17306,39 +18491,53 @@
             "jwt": []
           }
         ],
-        "summary": "Upload an CSV file and returns file metadata",
+        "summary": "The list of the database schemas where to upload information",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/excel_metadata/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "$ref": "#/components/schemas/ExcelMetadataUploadFilePostSchema"
-              }
+    "/api/v1/database/{pk}/select_star/{table_name}/": {
+      "get": {
+        "parameters": [
+          {
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
           },
-          "required": true
-        },
+          {
+            "description": "Table name",
+            "in": "path",
+            "name": "table_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Table schema",
+            "in": "path",
+            "name": "schema_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/UploadFileMetadata"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/SelectStarResponseSchema"
                 }
               }
             },
-            "description": "Columnar upload response"
+            "description": "SQL statement for a select star for table"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17349,6 +18548,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -17358,38 +18560,56 @@
             "jwt": []
           }
         ],
-        "summary": "Upload an Excel file and returns file metadata",
+        "summary": "Get database select star for table",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/export/": {
+    "/api/v1/database/{pk}/select_star/{table_name}/{schema_name}/": {
       "get": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_export_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "Table name",
+            "in": "path",
+            "name": "table_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Table schema",
+            "in": "path",
+            "name": "schema_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "application/zip": {
+              "application/json": {
                 "schema": {
-                  "format": "binary",
-                  "type": "string"
+                  "$ref": "#/components/schemas/SelectStarResponseSchema"
                 }
               }
             },
-            "description": "A zip file with database(s) and dataset(s) as YAML"
+            "description": "SQL statement for a select star for table"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -17397,6 +18617,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -17406,51 +18629,24 @@
             "jwt": []
           }
         ],
-        "summary": "Download database(s) and associated dataset(s) as a zip file",
+        "summary": "Get database select star for table",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/import/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "properties": {
-                  "formData": {
-                    "description": "upload file (ZIP)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "overwrite": {
-                    "description": "overwrite existing databases?",
-                    "type": "boolean"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              }
+    "/api/v1/database/{pk}/ssh_tunnel/": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
-          },
-          "required": true
-        },
+          }
+        ],
         "responses": {
           "200": {
             "content": {
@@ -17465,14 +18661,17 @@
                 }
               }
             },
-            "description": "Database import result"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "SSH Tunnel deleted"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -17485,59 +18684,47 @@
             "jwt": []
           }
         ],
-        "summary": "Import database(s) with associated datasets",
+        "summary": "Delete a SSH tunnel",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/oauth2/": {
-      "get": {
-        "description": "-> Receive and store personal access tokens from OAuth for user-level authorization",
+    "/api/v1/database/{pk}/sync_permissions/": {
+      "post": {
         "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",
+            "description": "The database connection ID",
+            "in": "path",
+            "name": "pk",
+            "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           }
         ],
         "responses": {
           "200": {
             "content": {
-              "text/html": {
+              "application/json": {
                 "schema": {
-                  "type": "string"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "A dummy self-closing HTML page"
+            "description": "Task created to sync permissions."
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -17550,33 +18737,41 @@
             "jwt": []
           }
         ],
-        "summary": "Receive personal access tokens from OAuth2",
+        "summary": "Re-sync all permissions for a database connection",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/related/{column_name}": {
+    "/api/v1/database/{pk}/table/{table_name}/{schema_name}/": {
       "get": {
         "parameters": [
           {
+            "description": "The database id",
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "Table name",
+            "in": "path",
+            "name": "table_name",
             "required": true,
             "schema": {
               "type": "string"
             }
           },
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "Table schema",
+            "in": "path",
+            "name": "schema_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
@@ -17584,11 +18779,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "$ref": "#/components/schemas/TableMetadataResponseSchema"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "Table metadata information"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17599,6 +18794,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -17608,44 +18806,64 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Get database table metadata",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/test_connection/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatabaseTestConnectionSchema"
-              }
+    "/api/v1/database/{pk}/table_extra/{table_name}/{schema_name}/": {
+      "get": {
+        "description": "Response depends on each DB engine spec normally focused on partitions.",
+        "parameters": [
+          {
+            "description": "The database id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
           },
-          "description": "Database schema",
-          "required": true
-        },
+          {
+            "description": "Table name",
+            "in": "path",
+            "name": "table_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Table schema",
+            "in": "path",
+            "name": "schema_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
                 }
               }
             },
-            "description": "Database Test Connection"
+            "description": "Table extra metadata information"
           },
           "400": {
             "$ref": "#/components/responses/400"
           },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -17658,46 +18876,67 @@
             "jwt": []
           }
         ],
-        "summary": "Test a database connection",
+        "summary": "Get table extra metadata",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/validate_parameters/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatabaseValidateParametersSchema"
-              }
+    "/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": "DB-specific parameters",
-          "required": true
-        },
+          {
+            "description": "Table name",
+            "in": "query",
+            "name": "name",
+            "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": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
                 }
               }
             },
-            "description": "Database Test Connection"
+            "description": "Table metadata information"
           },
-          "400": {
-            "$ref": "#/components/responses/400"
+          "401": {
+            "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -17708,22 +18947,49 @@
             "jwt": []
           }
         ],
-        "summary": "Validate database connection parameters",
+        "summary": "Get table metadata",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/{pk}": {
-      "delete": {
+    "/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": {
@@ -17731,29 +18997,18 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
                 }
               }
             },
-            "description": "Database deleted"
+            "description": "Table extra metadata information"
           },
           "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"
           }
@@ -17763,11 +19018,13 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a database",
+        "summary": "Get table extra metadata",
         "tags": [
           "Database"
         ]
-      },
+      }
+    },
+    "/api/v1/database/{pk}/tables/": {
       "get": {
         "parameters": [
           {
@@ -17778,6 +19035,17 @@
             "schema": {
               "type": "integer"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/database_tables_query_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -17785,11 +19053,23 @@
             "content": {
               "application/json": {
                 "schema": {
+                  "properties": {
+                    "count": {
+                      "type": "integer"
+                    },
+                    "result": {
+                      "description": "A List of tables for given database",
+                      "items": {
+                        "$ref": "#/components/schemas/DatabaseTablesResponse"
+                      },
+                      "type": "array"
+                    }
+                  },
                   "type": "object"
                 }
               }
             },
-            "description": "Database"
+            "description": "Tables list"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17797,6 +19077,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -17809,12 +19092,14 @@
             "jwt": []
           }
         ],
-        "summary": "Get a database",
+        "summary": "Get a list of tables for given database",
         "tags": [
           "Database"
         ]
-      },
-      "put": {
+      }
+    },
+    "/api/v1/database/{pk}/upload/": {
+      "post": {
         "parameters": [
           {
             "in": "path",
@@ -17827,33 +19112,29 @@
         ],
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/DatabaseRestApi.put"
+                "$ref": "#/components/schemas/UploadPostSchema"
               }
             }
           },
-          "description": "Database schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/DatabaseRestApi.put"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Database changed"
+            "description": "CSV upload response"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17861,9 +19142,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -17879,46 +19157,55 @@
             "jwt": []
           }
         ],
-        "summary": "Change a database",
+        "summary": "Upload a file to a database table",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/{pk}/catalogs/": {
-      "get": {
+    "/api/v1/database/{pk}/validate_sql/": {
+      "post": {
+        "description": "Validates that arbitrary SQL is acceptable for the given database.",
         "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"
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ValidateSQLRequest"
+              }
+            }
+          },
+          "description": "Validate SQL request",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/CatalogsResponseSchema"
+                  "properties": {
+                    "result": {
+                      "description": "A List of SQL errors found on the statement",
+                      "items": {
+                        "$ref": "#/components/schemas/ValidateSQLResponse"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "A List of all catalogs from the database"
+            "description": "Validation result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17938,36 +19225,29 @@
             "jwt": []
           }
         ],
-        "summary": "Get all catalogs from a database",
+        "summary": "Validate arbitrary SQL",
         "tags": [
           "Database"
         ]
       }
     },
-    "/api/v1/database/{pk}/columnar_upload/": {
-      "post": {
+    "/api/v1/dataset/": {
+      "delete": {
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "$ref": "#/components/schemas/ColumnarUploadPostSchema"
-              }
-            }
-          },
-          "required": true
-        },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
@@ -17980,7 +19260,7 @@
                 }
               }
             },
-            "description": "Columnar upload response"
+            "description": "Dataset bulk delete"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -17988,6 +19268,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -18003,23 +19286,24 @@
             "jwt": []
           }
         ],
-        "summary": "Upload a Columnar file to a database table",
+        "summary": "Bulk delete datasets",
         "tags": [
-          "Database"
+          "Datasets"
         ]
-      }
-    },
-    "/api/v1/database/{pk}/connection": {
+      },
       "get": {
+        "description": "Gets a list of datasets, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
           {
-            "description": "The database id",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -18027,11 +19311,70 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DatabaseConnectionSchema"
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/DatasetRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Database with connection info"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18051,32 +19394,21 @@
             "jwt": []
           }
         ],
-        "summary": "Get a database connection info",
+        "summary": "Get a list of datasets",
         "tags": [
-          "Database"
+          "Datasets"
         ]
-      }
-    },
-    "/api/v1/database/{pk}/csv_upload/": {
+      },
       "post": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
         "requestBody": {
           "content": {
-            "multipart/form-data": {
+            "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/CSVUploadPostSchema"
+                "$ref": "#/components/schemas/DatasetRestApi.post"
               }
             }
           },
+          "description": "Dataset schema",
           "required": true
         },
         "responses": {
@@ -18085,15 +19417,18 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DatasetRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "CSV upload response"
+            "description": "Dataset added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18101,9 +19436,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -18116,49 +19448,74 @@
             "jwt": []
           }
         ],
-        "summary": "Upload a CSV file to a database table",
+        "summary": "Create a new dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/excel_upload/": {
-      "post": {
+    "/api/v1/dataset/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "$ref": "#/components/schemas/ExcelUploadPostSchema"
-              }
-            }
-          },
-          "required": true
-        },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Excel upload response"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18166,9 +19523,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -18181,22 +19535,33 @@
             "jwt": []
           }
         ],
-        "summary": "Upload an Excel file to a database table",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/function_names/": {
+    "/api/v1/dataset/distinct/{column_name}": {
       "get": {
         "parameters": [
           {
             "in": "path",
-            "name": "pk",
+            "name": "column_name",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -18204,11 +19569,14 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DatabaseFunctionNamesResponse"
+                  "$ref": "#/components/schemas/DistincResponseSchema"
                 }
               }
             },
-            "description": "Query result"
+            "description": "Distinct field data"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -18225,41 +19593,59 @@
             "jwt": []
           }
         ],
-        "summary": "Get function names supported by a database",
+        "summary": "Get distinct values from field data",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/related_objects/": {
-      "get": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
+    "/api/v1/dataset/duplicate": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DatasetDuplicateSchema"
+              }
             }
-          }
-        ],
+          },
+          "description": "Dataset schema",
+          "required": true
+        },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DatabaseRelatedObjectsResponse"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DatasetDuplicateSchema"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Query result"
+            "description": "Dataset duplicated"
+          },
+          "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"
           }
@@ -18269,29 +19655,20 @@
             "jwt": []
           }
         ],
-        "summary": "Get charts and dashboards count associated to a database",
+        "summary": "Duplicate a dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/schemas/": {
+    "/api/v1/dataset/export/": {
       "get": {
         "parameters": [
-          {
-            "description": "The database id",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/database_schemas_query_schema"
+                  "$ref": "#/components/schemas/get_export_ids_schema"
                 }
               }
             },
@@ -18302,13 +19679,13 @@
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "text/plain": {
                 "schema": {
-                  "$ref": "#/components/schemas/SchemasResponseSchema"
+                  "type": "string"
                 }
               }
             },
-            "description": "A List of all schemas from the database"
+            "description": "Dataset export"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18328,40 +19705,53 @@
             "jwt": []
           }
         ],
-        "summary": "Get all schemas from a database",
+        "summary": "Download multiple datasets as YAML files",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/schemas_access_for_file_upload/": {
-      "get": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
+    "/api/v1/dataset/get_or_create/": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/GetOrCreateDatasetSchema"
+              }
             }
-          }
-        ],
+          },
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DatabaseSchemaAccessForFileUploadResponse"
+                  "properties": {
+                    "result": {
+                      "properties": {
+                        "table_id": {
+                          "type": "integer"
+                        }
+                      },
+                      "type": "object"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "The list of the database schemas where to upload information"
+            "description": "The ID of the table"
+          },
+          "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"
@@ -18372,53 +19762,74 @@
             "jwt": []
           }
         ],
-        "summary": "The list of the database schemas where to upload information",
+        "summary": "Retrieve a table by name, or create it if it does not exist",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/select_star/{table_name}/": {
-      "get": {
-        "parameters": [
-          {
-            "description": "The database id",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "Table name",
-            "in": "path",
-            "name": "table_name",
-            "required": true,
-            "schema": {
-              "type": "string"
+    "/api/v1/dataset/import/": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "multipart/form-data": {
+              "schema": {
+                "properties": {
+                  "formData": {
+                    "description": "upload file (ZIP or YAML)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "overwrite": {
+                    "description": "overwrite existing datasets?",
+                    "type": "boolean"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  },
+                  "sync_columns": {
+                    "description": "sync columns?",
+                    "type": "boolean"
+                  },
+                  "sync_metrics": {
+                    "description": "sync metrics?",
+                    "type": "boolean"
+                  }
+                },
+                "type": "object"
+              }
             }
           },
-          {
-            "description": "Table schema",
-            "in": "path",
-            "name": "schema_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/SelectStarResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "SQL statement for a select star for table"
+            "description": "Dataset import result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18426,9 +19837,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -18441,41 +19849,33 @@
             "jwt": []
           }
         ],
-        "summary": "Get database select star for table",
+        "summary": "Import dataset(s) with associated databases",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/select_star/{table_name}/{schema_name}/": {
+    "/api/v1/dataset/related/{column_name}": {
       "get": {
         "parameters": [
           {
-            "description": "The database id",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "Table name",
             "in": "path",
-            "name": "table_name",
+            "name": "column_name",
             "required": true,
             "schema": {
               "type": "string"
             }
           },
           {
-            "description": "Table schema",
-            "in": "path",
-            "name": "schema_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -18483,11 +19883,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/SelectStarResponseSchema"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "SQL statement for a select star for table"
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18498,9 +19898,6 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -18510,52 +19907,43 @@
             "jwt": []
           }
         ],
-        "summary": "Get database select star for table",
+        "summary": "Get related fields data",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/ssh_tunnel/": {
-      "delete": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
+    "/api/v1/dataset/warm_up_cache": {
+      "put": {
+        "description": "Warms up the cache for the table. Note for slices a force refresh occurs. In terms of the `extra_filters` these can be obtained from records in the JSON encoded `logs.json` column associated with the `explore_json` action.",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DatasetCacheWarmUpRequestSchema"
+              }
             }
-          }
-        ],
+          },
+          "description": "Identifies the database and table to warm up cache for, and any additional dashboard or filter context to use.",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/DatasetCacheWarmUpResponseSchema"
                 }
               }
             },
-            "description": "SSH Tunnel deleted"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
+            "description": "Each chart's warmup status"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -18565,41 +19953,22 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a SSH tunnel",
+        "summary": "Warm up the cache for each chart powered by the given table",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/table/{table_name}/{schema_name}/": {
-      "get": {
+    "/api/v1/dataset/{pk}": {
+      "delete": {
         "parameters": [
           {
-            "description": "The database id",
             "in": "path",
             "name": "pk",
             "required": true,
             "schema": {
               "type": "integer"
             }
-          },
-          {
-            "description": "Table name",
-            "in": "path",
-            "name": "table_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "Table schema",
-            "in": "path",
-            "name": "schema_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
           }
         ],
         "responses": {
@@ -18607,18 +19976,23 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/TableMetadataResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Table metadata information"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Dataset delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -18634,18 +20008,16 @@
             "jwt": []
           }
         ],
-        "summary": "Get database table metadata",
+        "summary": "Delete a dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
-      }
-    },
-    "/api/v1/database/{pk}/table_extra/{table_name}/{schema_name}/": {
+      },
       "get": {
-        "description": "Response depends on each DB engine spec normally focused on partitions.",
+        "description": "Get a dataset by ID",
         "parameters": [
           {
-            "description": "The database id",
+            "description": "The dataset ID",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -18654,21 +20026,22 @@
             }
           },
           {
-            "description": "Table name",
-            "in": "path",
-            "name": "table_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           },
           {
-            "description": "Table schema",
-            "in": "path",
-            "name": "schema_name",
-            "required": true,
+            "description": "Should Jinja macros from sql, metrics and columns be rendered and included in the response",
+            "in": "query",
+            "name": "include_rendered_sql",
             "schema": {
-              "type": "string"
+              "type": "boolean"
             }
           }
         ],
@@ -18677,11 +20050,20 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
+                  "properties": {
+                    "id": {
+                      "description": "The item id",
+                      "type": "string"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DatasetRestApi.get"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Table extra metadata information"
+            "description": "Dataset object has been returned."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -18689,9 +20071,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -18704,18 +20083,14 @@
             "jwt": []
           }
         ],
-        "summary": "Get table extra metadata",
+        "summary": "Get a dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
-      }
-    },
-    "/api/v1/database/{pk}/table_metadata/": {
-      "get": {
-        "description": "Metadata associated with the table (columns, indexes, etc.)",
+      },
+      "put": {
         "parameters": [
           {
-            "description": "The database id",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -18724,48 +20099,58 @@
             }
           },
           {
-            "description": "Table name",
-            "in": "query",
-            "name": "name",
-            "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",
+            "name": "override_columns",
             "schema": {
-              "type": "string"
+              "type": "boolean"
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/DatasetRestApi.put"
+              }
+            }
+          },
+          "description": "Dataset schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/DatasetRestApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Table metadata information"
+            "description": "Dataset changed"
+          },
+          "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"
           }
@@ -18775,18 +20160,17 @@
             "jwt": []
           }
         ],
-        "summary": "Get table metadata",
+        "summary": "Update a dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/table_metadata/extra/": {
-      "get": {
-        "description": "Extra metadata associated with the table (partitions, description, etc.)",
+    "/api/v1/dataset/{pk}/column/{column_id}": {
+      "delete": {
         "parameters": [
           {
-            "description": "The database id",
+            "description": "The dataset pk for this column",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -18795,28 +20179,12 @@
             }
           },
           {
-            "description": "Table name",
-            "in": "query",
-            "name": "name",
+            "description": "The column id for this dataset",
+            "in": "path",
+            "name": "column_id",
             "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"
+              "type": "integer"
             }
           }
         ],
@@ -18825,18 +20193,29 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/TableExtraMetadataResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Table extra metadata information"
+            "description": "Column deleted"
           },
           "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"
           }
@@ -18846,17 +20225,17 @@
             "jwt": []
           }
         ],
-        "summary": "Get table extra metadata",
+        "summary": "Delete a dataset column",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/tables/": {
-      "get": {
+    "/api/v1/dataset/{pk}/metric/{metric_id}": {
+      "delete": {
         "parameters": [
           {
-            "description": "The database id",
+            "description": "The dataset pk for this column",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -18865,15 +20244,13 @@
             }
           },
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/database_tables_query_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "description": "The metric id for this dataset",
+            "in": "path",
+            "name": "metric_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -18882,29 +20259,22 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "type": "integer"
-                    },
-                    "result": {
-                      "description": "A List of tables for given database",
-                      "items": {
-                        "$ref": "#/components/schemas/DatabaseTablesResponse"
-                      },
-                      "type": "array"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Tables list"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Metric deleted"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -18920,15 +20290,14 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of tables for given database",
+        "summary": "Delete a dataset metric",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/database/{pk}/validate_sql/": {
-      "post": {
-        "description": "Validates that arbitrary SQL is acceptable for the given database.",
+    "/api/v1/dataset/{pk}/refresh": {
+      "put": {
         "parameters": [
           {
             "in": "path",
@@ -18939,46 +20308,34 @@
             }
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ValidateSQLRequest"
-              }
-            }
-          },
-          "description": "Validate SQL request",
-          "required": true
-        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "description": "A List of SQL errors found on the statement",
-                      "items": {
-                        "$ref": "#/components/schemas/ValidateSQLResponse"
-                      },
-                      "type": "array"
+                    "message": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Validation result"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Dataset delete"
           },
           "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"
           }
@@ -18988,25 +20345,22 @@
             "jwt": []
           }
         ],
-        "summary": "Validate arbitrary SQL",
+        "summary": "Refresh and update columns of a dataset",
         "tags": [
-          "Database"
+          "Datasets"
         ]
       }
     },
-    "/api/v1/dataset/": {
-      "delete": {
+    "/api/v1/dataset/{pk}/related_objects": {
+      "get": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
         "responses": {
@@ -19014,32 +20368,18 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "message": {
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/DatasetRelatedObjectsResponse"
                 }
               }
             },
-            "description": "Dataset bulk delete"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Query result"
           },
           "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"
           }
@@ -19049,86 +20389,68 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete datasets",
+        "summary": "Get charts and dashboards count associated to a dataset",
         "tags": [
           "Datasets"
         ]
-      },
-      "get": {
-        "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": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
+      }
+    },
+    "/api/v1/datasource/{datasource_type}/{datasource_id}/column/{column_name}/values/": {
+      "get": {
+        "parameters": [
+          {
+            "description": "The type of datasource",
+            "in": "path",
+            "name": "datasource_type",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "The id of the datasource",
+            "in": "path",
+            "name": "datasource_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "The name of the column to get values for",
+            "in": "path",
+            "name": "column_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
                     "result": {
-                      "description": "The result from the get list query",
                       "items": {
-                        "$ref": "#/components/schemas/DatasetRestApi.get_list"
+                        "oneOf": [
+                          {
+                            "type": "string"
+                          },
+                          {
+                            "type": "integer"
+                          },
+                          {
+                            "type": "number"
+                          },
+                          {
+                            "type": "boolean"
+                          },
+                          {
+                            "type": "object"
+                          }
+                        ]
                       },
                       "type": "array"
                     }
@@ -19137,7 +20459,7 @@
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "A List of distinct values for the column"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19145,8 +20467,11 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -19157,50 +20482,91 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of datasets",
+        "summary": "Get possible values for a datasource column",
         "tags": [
-          "Datasets"
+          "Datasources"
         ]
-      },
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatasetRestApi.post"
-              }
+      }
+    },
+    "/api/v1/embedded_dashboard/{uuid}": {
+      "get": {
+        "parameters": [
+          {
+            "description": "The embedded configuration uuid",
+            "in": "path",
+            "name": "uuid",
+            "required": true,
+            "schema": {
+              "type": "string"
             }
           },
-          "description": "Dataset schema",
-          "required": true
-        },
+          {
+            "description": "The ui config of embedded dashboard (optional).",
+            "in": "query",
+            "name": "uiConfig",
+            "schema": {
+              "type": "number"
+            }
+          },
+          {
+            "description": "Show filters (optional).",
+            "in": "query",
+            "name": "show_filters",
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "description": "Expand filters (optional).",
+            "in": "query",
+            "name": "expand_filters",
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "description": "Native filters key to apply filters. (optional).",
+            "in": "query",
+            "name": "native_filters_key",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Permalink key to apply filters. (optional).",
+            "in": "query",
+            "name": "permalink_key",
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
                     "result": {
-                      "$ref": "#/components/schemas/DatasetRestApi.post"
+                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                     }
                   },
                   "type": "object"
                 }
+              },
+              "text/html": {
+                "schema": {
+                  "type": "string"
+                }
               }
             },
-            "description": "Dataset added"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Result contains the embedded dashboard configuration"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -19211,26 +20577,50 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new dataset",
+        "summary": "Get a report schedule log",
         "tags": [
-          "Datasets"
+          "Embedded Dashboard"
         ]
       }
     },
-    "/api/v1/dataset/_info": {
+    "/api/v1/explore/": {
       "get": {
-        "description": "Get metadata information about this API resource",
+        "description": "Assembles Explore related information (form_data, slice, dataset) in a single endpoint.<br/><br/> The information can be assembled from:<br/> - The cache using a form_data_key<br/> - The metadata database using a permalink_key<br/> - Build from scratch using dataset or slice identifiers.",
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
-                }
-              }
-            },
             "in": "query",
-            "name": "q"
+            "name": "form_data_key",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "query",
+            "name": "permalink_key",
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "query",
+            "name": "slice_id",
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "in": "query",
+            "name": "datasource_id",
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "in": "query",
+            "name": "datasource_type",
+            "schema": {
+              "type": "string"
+            }
           }
         ],
         "responses": {
@@ -19238,47 +20628,76 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "add_columns": {
-                      "type": "object"
-                    },
-                    "edit_columns": {
-                      "type": "object"
-                    },
-                    "filters": {
-                      "properties": {
-                        "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
-                        }
-                      },
-                      "type": "object"
-                    },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                  "$ref": "#/components/schemas/ExploreContextSchema"
+                }
+              }
+            },
+            "description": "Returns the initial context."
+          },
+          "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": "Assemble Explore related information in a single endpoint",
+        "tags": [
+          "Explore"
+        ]
+      }
+    },
+    "/api/v1/explore/form_data": {
+      "post": {
+        "parameters": [
+          {
+            "in": "query",
+            "name": "tab_id",
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/FormDataPostSchema"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "key": {
+                      "description": "The key to retrieve the form_data.",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "The form_data was stored successfully."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19298,33 +20717,23 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
+        "summary": "Create a new form_data",
         "tags": [
-          "Datasets"
+          "Explore Form Data"
         ]
       }
     },
-    "/api/v1/dataset/distinct/{column_name}": {
-      "get": {
+    "/api/v1/explore/form_data/{key}": {
+      "delete": {
         "parameters": [
           {
+            "description": "The form_data key.",
             "in": "path",
-            "name": "column_name",
+            "name": "key",
             "required": true,
             "schema": {
               "type": "string"
             }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
         "responses": {
@@ -19332,11 +20741,17 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DistincResponseSchema"
+                  "properties": {
+                    "message": {
+                      "description": "The result of the operation",
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Distinct field data"
+            "description": "Deleted the stored form_data."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19347,6 +20762,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -19356,43 +20774,38 @@
             "jwt": []
           }
         ],
-        "summary": "Get distinct values from field data",
+        "summary": "Delete a form_data",
         "tags": [
-          "Datasets"
+          "Explore Form Data"
         ]
-      }
-    },
-    "/api/v1/dataset/duplicate": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatasetDuplicateSchema"
-              }
+      },
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
             }
-          },
-          "description": "Dataset schema",
-          "required": true
-        },
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/DatasetDuplicateSchema"
+                    "form_data": {
+                      "description": "The stored form_data",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dataset duplicated"
+            "description": "Returns the stored form_data."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19400,9 +20813,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -19418,37 +20828,55 @@
             "jwt": []
           }
         ],
-        "summary": "Duplicate a dataset",
+        "summary": "Get a form_data",
         "tags": [
-          "Datasets"
+          "Explore Form Data"
         ]
-      }
-    },
-    "/api/v1/dataset/export/": {
-      "get": {
+      },
+      "put": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_export_ids_schema"
-                }
-              }
-            },
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
             "in": "query",
-            "name": "q"
+            "name": "tab_id",
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/FormDataPutSchema"
+              }
+            }
+          },
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
-              "text/plain": {
+              "application/json": {
                 "schema": {
-                  "type": "string"
+                  "properties": {
+                    "key": {
+                      "description": "The key to retrieve the form_data.",
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Dataset export"
+            "description": "The form_data was stored successfully."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19459,6 +20887,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -19468,44 +20899,44 @@
             "jwt": []
           }
         ],
-        "summary": "Download multiple datasets as YAML files",
+        "summary": "Update an existing form_data",
         "tags": [
-          "Datasets"
+          "Explore Form Data"
         ]
       }
     },
-    "/api/v1/dataset/get_or_create/": {
+    "/api/v1/explore/permalink": {
       "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/GetOrCreateDatasetSchema"
+                "$ref": "#/components/schemas/ExplorePermalinkStateSchema"
               }
             }
           },
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "properties": {
-                        "table_id": {
-                          "type": "integer"
-                        }
-                      },
-                      "type": "object"
+                    "key": {
+                      "description": "The key to retrieve the permanent link data.",
+                      "type": "string"
+                    },
+                    "url": {
+                      "description": "permanent link.",
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "The ID of the table"
+            "description": "The permanent link was stored successfully."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19525,74 +20956,40 @@
             "jwt": []
           }
         ],
-        "summary": "Retrieve a table by name, or create it if it does not exist",
+        "summary": "Create a new permanent link",
         "tags": [
-          "Datasets"
+          "Explore Permanent Link"
         ]
       }
     },
-    "/api/v1/dataset/import/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "multipart/form-data": {
-              "schema": {
-                "properties": {
-                  "formData": {
-                    "description": "upload file (ZIP or YAML)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "overwrite": {
-                    "description": "overwrite existing datasets?",
-                    "type": "boolean"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  },
-                  "sync_columns": {
-                    "description": "sync columns?",
-                    "type": "boolean"
-                  },
-                  "sync_metrics": {
-                    "description": "sync metrics?",
-                    "type": "boolean"
-                  }
-                },
-                "type": "object"
-              }
-            }
-          },
-          "required": true
-        },
+    "/api/v1/explore/permalink/{key}": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "state": {
+                      "description": "The stored state",
+                      "type": "object"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dataset import result"
+            "description": "Returns the stored form_data."
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19600,6 +20997,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -19612,28 +21012,21 @@
             "jwt": []
           }
         ],
-        "summary": "Import dataset(s) with associated databases",
+        "summary": "Get chart's permanent link state",
         "tags": [
-          "Datasets"
+          "Explore Permanent Link"
         ]
       }
     },
-    "/api/v1/dataset/related/{column_name}": {
+    "/api/v1/log/": {
       "get": {
+        "description": "Gets a list of logs, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
-          {
-            "in": "path",
-            "name": "column_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -19646,11 +21039,70 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/LogRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19658,8 +21110,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -19670,95 +21122,48 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Get a list of logs",
         "tags": [
-          "Datasets"
+          "LogRestApi"
         ]
-      }
-    },
-    "/api/v1/dataset/warm_up_cache": {
-      "put": {
-        "description": "Warms up the cache for the table. Note for slices a force refresh occurs. In terms of the `extra_filters` these can be obtained from records in the JSON encoded `logs.json` column associated with the `explore_json` action.",
+      },
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/DatasetCacheWarmUpRequestSchema"
+                "$ref": "#/components/schemas/LogRestApi.post"
               }
             }
           },
-          "description": "Identifies the database and table to warm up cache for, and any additional dashboard or filter context to use.",
+          "description": "Model schema",
           "required": true
         },
         "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/DatasetCacheWarmUpResponseSchema"
-                }
-              }
-            },
-            "description": "Each chart's warmup status"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
-          "500": {
-            "$ref": "#/components/responses/500"
-          }
-        },
-        "security": [
-          {
-            "jwt": []
-          }
-        ],
-        "summary": "Warm up the cache for each chart powered by the given table",
-        "tags": [
-          "Datasets"
-        ]
-      }
-    },
-    "/api/v1/dataset/{pk}": {
-      "delete": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
+                    "id": {
                       "type": "string"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/LogRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dataset delete"
+            "description": "Item inserted"
+          },
+          "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"
           },
@@ -19771,18 +21176,18 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a dataset",
         "tags": [
-          "Datasets"
+          "LogRestApi"
         ]
-      },
+      }
+    },
+    "/api/v1/log/recent_activity/": {
       "get": {
-        "description": "Get a dataset by ID",
         "parameters": [
           {
-            "description": "The dataset ID",
+            "description": "The id of the user",
             "in": "path",
-            "name": "pk",
+            "name": "user_id",
             "required": true,
             "schema": {
               "type": "integer"
@@ -19792,20 +21197,12 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_recent_activity_schema"
                 }
               }
             },
             "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": {
@@ -19813,20 +21210,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "id": {
-                      "description": "The item id",
-                      "type": "string"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/DatasetRestApi.get"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RecentActivityResponseSchema"
                 }
               }
             },
-            "description": "Dataset object has been returned."
+            "description": "A List of recent activity objects"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19834,8 +21222,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
+          "403": {
+            "$ref": "#/components/responses/403"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -19846,12 +21234,15 @@
             "jwt": []
           }
         ],
-        "summary": "Get a dataset",
+        "summary": "Get recent activity data for a user",
         "tags": [
-          "Datasets"
+          "LogRestApi"
         ]
-      },
-      "put": {
+      }
+    },
+    "/api/v1/log/{pk}": {
+      "get": {
+        "description": "Get an item model",
         "parameters": [
           {
             "in": "path",
@@ -19862,42 +21253,68 @@
             }
           },
           {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
+              }
+            },
             "in": "query",
-            "name": "override_columns",
-            "schema": {
-              "type": "boolean"
-            }
+            "name": "q"
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/DatasetRestApi.put"
-              }
-            }
-          },
-          "description": "Dataset schema",
-          "required": true
-        },
         "responses": {
           "200": {
             "content": {
               "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": {
-                      "type": "number"
+                      "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.put"
+                      "$ref": "#/components/schemas/LogRestApi.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": "Dataset changed"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -19905,9 +21322,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -19923,129 +21337,119 @@
             "jwt": []
           }
         ],
-        "summary": "Update a dataset",
+        "summary": "Get a log detail information",
         "tags": [
-          "Datasets"
+          "LogRestApi"
         ]
       }
     },
-    "/api/v1/dataset/{pk}/column/{column_id}": {
-      "delete": {
-        "parameters": [
-          {
-            "description": "The dataset pk for this column",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The column id for this dataset",
-            "in": "path",
-            "name": "column_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+    "/api/v1/me/": {
+      "get": {
+        "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": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/UserResponseSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Column deleted"
+            "description": "The current user"
           },
           "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": "Delete a dataset column",
+        "summary": "Get the user object",
         "tags": [
-          "Datasets"
+          "Current User"
         ]
       }
     },
-    "/api/v1/dataset/{pk}/metric/{metric_id}": {
-      "delete": {
-        "parameters": [
-          {
-            "description": "The dataset pk for this column",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+    "/api/v1/me/roles/": {
+      "get": {
+        "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": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "result": {
+                      "$ref": "#/components/schemas/UserResponseSchema"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "The current user"
           },
-          {
-            "description": "The metric id for this dataset",
-            "in": "path",
-            "name": "metric_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+          "401": {
+            "$ref": "#/components/responses/401"
           }
-        ],
+        },
+        "summary": "Get the user roles",
+        "tags": [
+          "Current User"
+        ]
+      }
+    },
+    "/api/v1/menu/": {
+      "get": {
+        "description": "Get the menu data structure. Returns a forest like structure with the menu the user has access to",
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "description": "Menu items in a forest like data structure",
+                      "items": {
+                        "properties": {
+                          "childs": {
+                            "items": {
+                              "type": "object"
+                            },
+                            "type": "array"
+                          },
+                          "icon": {
+                            "description": "Icon name to show for this menu item",
+                            "type": "string"
+                          },
+                          "label": {
+                            "description": "Pretty name for the menu item",
+                            "type": "string"
+                          },
+                          "name": {
+                            "description": "The internal menu item name, maps to permission_name",
+                            "type": "string"
+                          },
+                          "url": {
+                            "description": "The URL for the menu item",
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Metric deleted"
+            "description": "Get menu data"
           },
           "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": [
@@ -20053,22 +21457,25 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a dataset metric",
         "tags": [
-          "Datasets"
+          "Menu"
         ]
       }
     },
-    "/api/v1/dataset/{pk}/refresh": {
-      "put": {
+    "/api/v1/query/": {
+      "get": {
+        "description": "Gets a list of queries, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
         "parameters": [
           {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20077,25 +21484,76 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/QueryRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Dataset delete"
+            "description": "Items from Model"
+          },
+          "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"
           },
@@ -20108,22 +21566,33 @@
             "jwt": []
           }
         ],
-        "summary": "Refresh and update columns of a dataset",
+        "summary": "Get a list of queries",
         "tags": [
-          "Datasets"
+          "Queries"
         ]
       }
     },
-    "/api/v1/dataset/{pk}/related_objects": {
+    "/api/v1/query/distinct/{column_name}": {
       "get": {
         "parameters": [
           {
             "in": "path",
-            "name": "pk",
+            "name": "column_name",
             "required": true,
             "schema": {
-              "type": "integer"
+              "type": "string"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20131,11 +21600,14 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DatasetRelatedObjectsResponse"
+                  "$ref": "#/components/schemas/DistincResponseSchema"
                 }
               }
             },
-            "description": "Query result"
+            "description": "Distinct field data"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -20152,41 +21624,33 @@
             "jwt": []
           }
         ],
-        "summary": "Get charts and dashboards count associated to a dataset",
+        "summary": "Get distinct values from field data",
         "tags": [
-          "Datasets"
+          "Queries"
         ]
       }
     },
-    "/api/v1/datasource/{datasource_type}/{datasource_id}/column/{column_name}/values/": {
+    "/api/v1/query/related/{column_name}": {
       "get": {
         "parameters": [
           {
-            "description": "The type of datasource",
             "in": "path",
-            "name": "datasource_type",
+            "name": "column_name",
             "required": true,
             "schema": {
               "type": "string"
             }
           },
           {
-            "description": "The id of the datasource",
-            "in": "path",
-            "name": "datasource_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "description": "The name of the column to get values for",
-            "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": {
@@ -20194,35 +21658,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "items": {
-                        "oneOf": [
-                          {
-                            "type": "string"
-                          },
-                          {
-                            "type": "integer"
-                          },
-                          {
-                            "type": "number"
-                          },
-                          {
-                            "type": "boolean"
-                          },
-                          {
-                            "type": "object"
-                          }
-                        ]
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "A List of distinct values for the column"
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20230,9 +21670,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -20245,25 +21682,25 @@
             "jwt": []
           }
         ],
-        "summary": "Get possible values for a datasource column",
+        "summary": "Get related fields data",
         "tags": [
-          "Datasources"
+          "Queries"
         ]
       }
     },
-    "/api/v1/embedded_dashboard/{uuid}": {
-      "get": {
-        "parameters": [
-          {
-            "description": "The embedded configuration uuid",
-            "in": "path",
-            "name": "uuid",
-            "required": true,
-            "schema": {
-              "type": "string"
+    "/api/v1/query/stop": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/StopQuerySchema"
+              }
             }
-          }
-        ],
+          },
+          "description": "Stop query schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
@@ -20271,14 +21708,17 @@
                 "schema": {
                   "properties": {
                     "result": {
-                      "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Result contains the embedded dashboard configuration"
+            "description": "Query stopped"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -20295,50 +21735,25 @@
             "jwt": []
           }
         ],
-        "summary": "Get a report schedule log",
+        "summary": "Manually stop a query with client_id",
         "tags": [
-          "Embedded Dashboard"
+          "Queries"
         ]
       }
     },
-    "/api/v1/explore/": {
+    "/api/v1/query/updated_since": {
       "get": {
-        "description": "Assembles Explore related information (form_data, slice, dataset) in a single endpoint.<br/><br/> The information can be assembled from:<br/> - The cache using a form_data_key<br/> - The metadata database using a permalink_key<br/> - Build from scratch using dataset or slice identifiers.",
         "parameters": [
           {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/queries_get_updated_since_schema"
+                }
+              }
+            },
             "in": "query",
-            "name": "form_data_key",
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "in": "query",
-            "name": "permalink_key",
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "in": "query",
-            "name": "slice_id",
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "in": "query",
-            "name": "datasource_id",
-            "schema": {
-              "type": "integer"
-            }
-          },
-          {
-            "in": "query",
-            "name": "datasource_type",
-            "schema": {
-              "type": "string"
-            }
+            "name": "q"
           }
         ],
         "responses": {
@@ -20346,11 +21761,20 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/ExploreContextSchema"
+                  "properties": {
+                    "result": {
+                      "description": "A List of queries that changed after last_updated_ms",
+                      "items": {
+                        "$ref": "#/components/schemas/QueryRestApi.get"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Returns the initial context."
+            "description": "Queries list"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20361,9 +21785,6 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -20373,41 +21794,79 @@
             "jwt": []
           }
         ],
-        "summary": "Assemble Explore related information in a single endpoint",
+        "summary": "Get a list of queries that changed after last_updated_ms",
         "tags": [
-          "Explore"
+          "Queries"
         ]
       }
     },
-    "/api/v1/explore/form_data": {
-      "post": {
+    "/api/v1/query/{pk}": {
+      "get": {
+        "description": "Get an item model",
         "parameters": [
           {
-            "in": "query",
-            "name": "tab_id",
+            "in": "path",
+            "name": "pk",
+            "required": true,
             "schema": {
               "type": "integer"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/FormDataPostSchema"
-              }
-            }
-          },
-          "required": true
-        },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the form_data.",
+                    "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/QueryRestApi.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"
                     }
                   },
@@ -20415,7 +21874,7 @@
                 }
               }
             },
-            "description": "The form_data was stored successfully."
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20423,6 +21882,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -20435,23 +21897,25 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new form_data",
+        "summary": "Get query detail information",
         "tags": [
-          "Explore Form Data"
+          "Queries"
         ]
       }
     },
-    "/api/v1/explore/form_data/{key}": {
+    "/api/v1/report/": {
       "delete": {
         "parameters": [
           {
-            "description": "The form_data key.",
-            "in": "path",
-            "name": "key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20461,7 +21925,6 @@
                 "schema": {
                   "properties": {
                     "message": {
-                      "description": "The result of the operation",
                       "type": "string"
                     }
                   },
@@ -20469,14 +21932,14 @@
                 }
               }
             },
-            "description": "Deleted the stored form_data."
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Report Schedule bulk delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -20492,20 +21955,24 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a form_data",
+        "summary": "Bulk delete report schedules",
         "tags": [
-          "Explore Form Data"
+          "Report Schedules"
         ]
       },
       "get": {
+        "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": [
           {
-            "in": "path",
-            "name": "key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20514,16 +21981,69 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "form_data": {
-                      "description": "The stored form_data",
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/ReportScheduleRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Returns the stored form_data."
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20531,9 +22051,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -20546,55 +22063,41 @@
             "jwt": []
           }
         ],
-        "summary": "Get a form_data",
+        "summary": "Get a list of report schedules",
         "tags": [
-          "Explore Form Data"
+          "Report Schedules"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "in": "query",
-            "name": "tab_id",
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/FormDataPutSchema"
+                "$ref": "#/components/schemas/ReportScheduleRestApi.post"
               }
             }
           },
+          "description": "Report Schedule schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the form_data.",
-                      "type": "string"
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/ReportScheduleRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "The form_data was stored successfully."
+            "description": "Report schedule added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20617,44 +22120,74 @@
             "jwt": []
           }
         ],
-        "summary": "Update an existing form_data",
+        "summary": "Create a report schedule",
         "tags": [
-          "Explore Form Data"
+          "Report Schedules"
         ]
       }
     },
-    "/api/v1/explore/permalink": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ExplorePermalinkStateSchema"
+    "/api/v1/report/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
               }
-            }
-          },
-          "required": true
-        },
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "key": {
-                      "description": "The key to retrieve the permanent link data.",
-                      "type": "string"
+                    "add_columns": {
+                      "type": "object"
                     },
-                    "url": {
-                      "description": "permanent link.",
-                      "type": "string"
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "The permanent link was stored successfully."
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20674,22 +22207,33 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new permanent link",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Explore Permanent Link"
+          "Report Schedules"
         ]
       }
     },
-    "/api/v1/explore/permalink/{key}": {
+    "/api/v1/report/related/{column_name}": {
       "get": {
         "parameters": [
           {
             "in": "path",
-            "name": "key",
+            "name": "column_name",
             "required": true,
             "schema": {
               "type": "string"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20697,17 +22241,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "state": {
-                      "description": "The stored state",
-                      "type": "object"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "Returns the stored form_data."
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -20718,9 +22256,6 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -20730,64 +22265,26 @@
             "jwt": []
           }
         ],
-        "summary": "Get chart's permanent link state",
+        "summary": "Get related fields data",
         "tags": [
-          "Explore Permanent Link"
+          "Report Schedules"
         ]
       }
     },
-    "/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": {
+    "/api/v1/report/slack_channels/": {
+      "get": {
+        "description": "Get slack channels",
+        "parameters": [
+          {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IASLoginTokenResponseSchema"
+                  "$ref": "#/components/schemas/get_slack_channels_schema"
                 }
               }
             },
-            "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"
-            }
+            "name": "q"
           }
         ],
         "responses": {
@@ -20795,11 +22292,42 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IASProfilesResponseSchema"
+                  "properties": {
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "id": {
+                            "type": "string"
+                          },
+                          "name": {
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "IAS Tokens"
+            "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": [
@@ -20807,22 +22335,22 @@
             "jwt": []
           }
         ],
+        "summary": "Get slack channels",
         "tags": [
-          "IAS"
+          "Report Schedules"
         ]
       }
     },
-    "/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.",
+    "/api/v1/report/{pk}": {
+      "delete": {
         "parameters": [
           {
-            "description": "The name of the IAS profile",
-            "in": "query",
-            "name": "profile",
-            "required": false,
+            "description": "The report schedule pk",
+            "in": "path",
+            "name": "pk",
+            "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           }
         ],
@@ -20831,14 +22359,28 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IASTokensResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "IAS Tokens"
+            "description": "Item deleted"
           },
-          "400": {
-            "$ref": "#/components/responses/400"
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
           }
         },
         "security": [
@@ -20846,31 +22388,32 @@
             "jwt": []
           }
         ],
+        "summary": "Delete a report schedule",
         "tags": [
-          "IAS"
+          "Report Schedules"
         ]
-      }
-    },
-    "/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.",
+        "description": "Get an item model",
         "parameters": [
           {
             "in": "path",
             "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           },
           {
-            "description": "The name of the IAS profile",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
+              }
+            },
             "in": "query",
-            "name": "profile",
-            "required": false,
-            "schema": {
-              "type": "string"
-            }
+            "name": "q"
           }
         ],
         "responses": {
@@ -20878,14 +22421,67 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IASTokensResponseSchema"
+                  "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/ReportScheduleRestApi.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": "IAS Tokens"
+            "description": "Item from Model"
           },
           "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": [
@@ -20893,24 +22489,55 @@
             "jwt": []
           }
         ],
+        "summary": "Get a report schedule",
         "tags": [
-          "IAS"
+          "Report Schedules"
         ]
-      }
-    },
-    "/api/v1/lakehouse": {
-      "get": {
-        "description": "Disconnect a Lakehouse.",
+      },
+      "put": {
+        "parameters": [
+          {
+            "description": "The Report Schedule pk",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ReportScheduleRestApi.put"
+              }
+            }
+          },
+          "description": "Report Schedule schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseGetListResponseSchema"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/ReportScheduleRestApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Lakehouse has been deleted"
+            "description": "Report Schedule changed"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -20918,6 +22545,12 @@
           "403": {
             "$ref": "#/components/responses/403"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -20927,24 +22560,35 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of all connected Lakehouses",
+        "summary": "Update a report schedule",
         "tags": [
-          "Lakehouse"
+          "Report Schedules"
         ]
       }
     },
-    "/api/v1/lakehouse/{lakehouse_id}": {
-      "delete": {
-        "description": "Disconnect a Lakehouse.",
+    "/api/v1/report/{pk}/log/": {
+      "get": {
+        "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 unique id of the lakehouse",
+            "description": "The report schedule id for these logs",
             "in": "path",
-            "name": "lakehouse_id",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20952,20 +22596,40 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseDisconnectResponseSchema"
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "ids": {
+                      "description": "A list of log ids",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/ReportExecutionLogRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Lakehouse has been deleted"
+            "description": "Items from logs"
+          },
+          "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"
@@ -20976,22 +22640,43 @@
             "jwt": []
           }
         ],
-        "summary": "Disconnect a Lakehouse and all catalogs",
+        "summary": "Get a list of report schedule logs",
         "tags": [
-          "Lakehouse"
+          "Report Schedules"
         ]
-      },
+      }
+    },
+    "/api/v1/report/{pk}/log/{log_id}": {
       "get": {
-        "description": "Get information regarding a connected Lakehouse",
         "parameters": [
           {
-            "description": "The unique id of the lakehouse",
+            "description": "The report schedule pk for log",
             "in": "path",
-            "name": "lakehouse_id",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
+            }
+          },
+          {
+            "description": "The log pk",
+            "in": "path",
+            "name": "log_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -20999,21 +22684,33 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseGetResponseSchema"
+                  "properties": {
+                    "id": {
+                      "description": "The log id",
+                      "type": "string"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/ReportExecutionLogRestApi.get"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Lakehouses"
+            "description": "Item log"
+          },
+          "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"
           }
@@ -21023,48 +22720,42 @@
             "jwt": []
           }
         ],
-        "summary": "Get information about a specific Lakehouse",
+        "summary": "Get a report schedule log",
         "tags": [
-          "Lakehouse"
+          "Report Schedules"
         ]
-      },
-      "post": {
-        "description": "Endpoint for connecting a Lakehouse and associated catalogs to the ACS Superset instance.",
+      }
+    },
+    "/api/v1/rowlevelsecurity/": {
+      "delete": {
         "parameters": [
           {
-            "description": "The unique id of the lakehouse",
-            "in": "path",
-            "name": "lakehouse_id",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
-        "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"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "The connection task has been scheduled."
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "RLS Rule bulk delete"
           },
           "401": {
             "$ref": "#/components/responses/401"
@@ -21072,6 +22763,12 @@
           "403": {
             "$ref": "#/components/responses/403"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -21081,40 +22778,24 @@
             "jwt": []
           }
         ],
-        "summary": "Schedule a task to connect a Lakehouse and catalogs",
+        "summary": "Bulk delete RLS rules",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
-      }
-    },
-    "/api/v1/lakehouse/{lakehouse_id}/dataset": {
+      },
       "get": {
-        "description": "Endpoint for listing all virtual datasets on a Lakehouse",
+        "description": "Gets a list of RLS, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.",
         "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",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_list_schema"
+                }
+              }
+            },
             "in": "query",
-            "name": "schema",
-            "schema": {
-              "type": "string"
-            }
+            "name": "q"
           }
         ],
         "responses": {
@@ -21122,11 +22803,70 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseDatasetListResponseSchema"
+                  "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
+                    "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"
+                    },
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/RLSRestApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "All virtual datasets satisfying the query params."
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21134,8 +22874,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -21146,45 +22886,41 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of virtual datasets",
+        "summary": "Get a list of RLS",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
       },
       "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"
+                "$ref": "#/components/schemas/RLSRestApi.post"
               }
             }
           },
-          "description": "Payload containing virtual dataset parameters.",
+          "description": "RLS schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseDatasetResponseSchema"
+                  "properties": {
+                    "id": {
+                      "type": "number"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/RLSRestApi.post"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "The virtual dataset has been created."
+            "description": "RLS Rule added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21192,8 +22928,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "422": {
             "$ref": "#/components/responses/422"
@@ -21207,33 +22943,26 @@
             "jwt": []
           }
         ],
-        "summary": "Create a virtual dataset out of a query",
+        "summary": "Create a new RLS rule",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
       }
     },
-    "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/cancel": {
-      "post": {
-        "description": "Endpoint for cancelling a scheduled connection request.",
+    "/api/v1/rowlevelsecurity/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
         "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"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -21241,11 +22970,47 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseConnectStatusResponseSchema"
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "The status of the task."
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21253,11 +23018,8 @@
           "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"
@@ -21268,33 +23030,33 @@
             "jwt": []
           }
         ],
-        "summary": "Cancel a running task",
+        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
       }
     },
-    "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/result": {
+    "/api/v1/rowlevelsecurity/related/{column_name}": {
       "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",
+            "name": "column_name",
             "required": true,
             "schema": {
               "type": "string"
             }
           },
           {
-            "description": "The id of the connection task",
-            "in": "path",
-            "name": "task_id",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_related_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
           }
         ],
         "responses": {
@@ -21302,11 +23064,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseConnectResultResponseSchema"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "The status of the task."
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21314,7 +23076,7 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
+          "404": {
             "$ref": "#/components/responses/404"
           },
           "500": {
@@ -21326,32 +23088,21 @@
             "jwt": []
           }
         ],
-        "summary": "Get the payload of a completed connection task",
+        "summary": "Get related fields data",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
       }
     },
-    "/api/v1/lakehouse/{lakehouse_id}/task/{task_id}/status": {
-      "get": {
-        "description": "Endpoint for checking what the status of a scheduled connection request is.",
+    "/api/v1/rowlevelsecurity/{pk}": {
+      "delete": {
         "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",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           }
         ],
@@ -21360,24 +23111,23 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LakehouseConnectStatusResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "The status of the task."
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "403": {
-            "$ref": "#/components/responses/403"
+            "description": "Item deleted"
           },
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -21387,21 +23137,27 @@
             "jwt": []
           }
         ],
-        "summary": "Check the status of a connection task",
+        "summary": "Delete an RLS",
         "tags": [
-          "Lakehouse"
+          "Row Level Security"
         ]
-      }
-    },
-    "/api/v1/log/": {
+      },
       "get": {
-        "description": "Gets a list of logs, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
+        "description": "Get an item model",
         "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
@@ -21415,10 +23171,6 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -21429,12 +23181,9 @@
                       },
                       "type": "object"
                     },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                    "id": {
+                      "description": "The item id",
+                      "type": "string"
                     },
                     "label_columns": {
                       "properties": {
@@ -21446,38 +23195,27 @@
                       },
                       "type": "object"
                     },
-                    "list_columns": {
+                    "result": {
+                      "$ref": "#/components/schemas/RLSRestApi.get"
+                    },
+                    "show_columns": {
                       "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "list_title": {
+                    "show_title": {
                       "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
+                      "example": "Show Item Details",
                       "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/LogRestApi.get_list"
-                      },
-                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21485,6 +23223,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -21497,41 +23238,52 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of logs",
+        "summary": "Get an RLS",
         "tags": [
-          "LogRestApi"
+          "Row Level Security"
         ]
       },
-      "post": {
+      "put": {
+        "parameters": [
+          {
+            "description": "The Rule pk",
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/LogRestApi.post"
+                "$ref": "#/components/schemas/RLSRestApi.put"
               }
             }
           },
-          "description": "Model schema",
+          "description": "RLS schema",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
                     "id": {
-                      "type": "string"
+                      "type": "number"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/LogRestApi.post"
+                      "$ref": "#/components/schemas/RLSRestApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item inserted"
+            "description": "Rule changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21539,6 +23291,12 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "403": {
+            "$ref": "#/components/responses/403"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -21551,28 +23309,20 @@
             "jwt": []
           }
         ],
+        "summary": "Update an RLS rule",
         "tags": [
-          "LogRestApi"
+          "Row Level Security"
         ]
       }
     },
-    "/api/v1/log/recent_activity/": {
-      "get": {
+    "/api/v1/saved_query/": {
+      "delete": {
         "parameters": [
-          {
-            "description": "The id of the user",
-            "in": "path",
-            "name": "user_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_recent_activity_schema"
+                  "$ref": "#/components/schemas/get_delete_ids_schema"
                 }
               }
             },
@@ -21585,20 +23335,25 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RecentActivityResponseSchema"
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "A List of recent activity objects"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Saved queries bulk delete"
           },
           "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"
@@ -21609,29 +23364,19 @@
             "jwt": []
           }
         ],
-        "summary": "Get recent activity data for a user",
+        "summary": "Bulk delete saved queries",
         "tags": [
-          "LogRestApi"
+          "Queries"
         ]
-      }
-    },
-    "/api/v1/log/{pk}": {
+      },
       "get": {
-        "description": "Get an item model",
+        "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": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -21645,6 +23390,10 @@
               "application/json": {
                 "schema": {
                   "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -21655,9 +23404,12 @@
                       },
                       "type": "object"
                     },
-                    "id": {
-                      "description": "The item id",
-                      "type": "string"
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     },
                     "label_columns": {
                       "properties": {
@@ -21669,27 +23421,38 @@
                       },
                       "type": "object"
                     },
-                    "result": {
-                      "$ref": "#/components/schemas/LogRestApi.get"
-                    },
-                    "show_columns": {
+                    "list_columns": {
                       "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "show_title": {
+                    "list_title": {
                       "description": "A title to render. Will be translated by babel",
-                      "example": "Show Item Details",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/SavedQueryRestApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21697,9 +23460,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -21712,119 +23472,53 @@
             "jwt": []
           }
         ],
-        "summary": "Get a log detail information",
+        "summary": "Get a list of saved queries",
         "tags": [
-          "LogRestApi"
+          "Queries"
         ]
-      }
-    },
-    "/api/v1/me/": {
-      "get": {
-        "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": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "result": {
-                      "$ref": "#/components/schemas/UserResponseSchema"
-                    }
-                  },
-                  "type": "object"
-                }
+      },
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/SavedQueryRestApi.post"
               }
-            },
-            "description": "The current user"
+            }
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          }
+          "description": "Model schema",
+          "required": true
         },
-        "summary": "Get the user object",
-        "tags": [
-          "Current User"
-        ]
-      }
-    },
-    "/api/v1/me/roles/": {
-      "get": {
-        "description": "Gets the user roles corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.",
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
+                    "id": {
+                      "type": "string"
+                    },
                     "result": {
-                      "$ref": "#/components/schemas/UserResponseSchema"
+                      "$ref": "#/components/schemas/SavedQueryRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "The current user"
+            "description": "Item inserted"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
-          }
-        },
-        "summary": "Get the user roles",
-        "tags": [
-          "Current User"
-        ]
-      }
-    },
-    "/api/v1/menu/": {
-      "get": {
-        "description": "Get the menu data structure. Returns a forest like structure with the menu the user has access to",
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "result": {
-                      "description": "Menu items in a forest like data structure",
-                      "items": {
-                        "properties": {
-                          "childs": {
-                            "items": {
-                              "type": "object"
-                            },
-                            "type": "array"
-                          },
-                          "icon": {
-                            "description": "Icon name to show for this menu item",
-                            "type": "string"
-                          },
-                          "label": {
-                            "description": "Pretty name for the menu item",
-                            "type": "string"
-                          },
-                          "name": {
-                            "description": "The internal menu item name, maps to permission_name",
-                            "type": "string"
-                          },
-                          "url": {
-                            "description": "The URL for the menu item",
-                            "type": "string"
-                          }
-                        },
-                        "type": "object"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Get menu data"
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
           }
         },
         "security": [
@@ -21832,20 +23526,21 @@
             "jwt": []
           }
         ],
+        "summary": "Create a saved query",
         "tags": [
-          "Menu"
+          "Queries"
         ]
       }
     },
-    "/api/v1/query/": {
+    "/api/v1/saved_query/_info": {
       "get": {
-        "description": "Gets a list of queries, use Rison or JSON query parameters for filtering, sorting, pagination and  for selecting specific columns and metadata.",
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
+                  "$ref": "#/components/schemas/get_info_schema"
                 }
               }
             },
@@ -21859,69 +23554,46 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                        }
-                      },
+                    "add_columns": {
                       "type": "object"
                     },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
+                    "edit_columns": {
+                      "type": "object"
                     },
-                    "label_columns": {
+                    "filters": {
                       "properties": {
                         "column_name": {
-                          "description": "The label for the column name. Will be translated by babel",
-                          "example": "A Nice label for the column",
-                          "type": "string"
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
                         }
                       },
                       "type": "object"
                     },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
-                      "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
-                    },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/QueryRestApi.get_list"
-                      },
-                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -21941,13 +23613,13 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of queries",
+        "summary": "Get metadata information about this API resource",
         "tags": [
           "Queries"
         ]
       }
     },
-    "/api/v1/query/distinct/{column_name}": {
+    "/api/v1/saved_query/distinct/{column_name}": {
       "get": {
         "parameters": [
           {
@@ -22005,22 +23677,14 @@
         ]
       }
     },
-    "/api/v1/query/related/{column_name}": {
+    "/api/v1/saved_query/export/": {
       "get": {
         "parameters": [
-          {
-            "in": "path",
-            "name": "column_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
+                  "$ref": "#/components/schemas/get_export_ids_schema"
                 }
               }
             },
@@ -22031,13 +23695,14 @@
         "responses": {
           "200": {
             "content": {
-              "application/json": {
+              "application/zip": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "format": "binary",
+                  "type": "string"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "A zip file with saved query(ies) and database(s) as YAML"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22057,23 +23722,49 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
+        "summary": "Download multiple saved queries as YAML files",
         "tags": [
           "Queries"
         ]
       }
     },
-    "/api/v1/query/stop": {
+    "/api/v1/saved_query/import/": {
       "post": {
         "requestBody": {
           "content": {
-            "application/json": {
+            "multipart/form-data": {
               "schema": {
-                "$ref": "#/components/schemas/StopQuerySchema"
+                "properties": {
+                  "formData": {
+                    "description": "upload file (ZIP)",
+                    "format": "binary",
+                    "type": "string"
+                  },
+                  "overwrite": {
+                    "description": "overwrite existing saved queries?",
+                    "type": "boolean"
+                  },
+                  "passwords": {
+                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_passwords": {
+                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_key_passwords": {
+                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
+                    "type": "string"
+                  },
+                  "ssh_tunnel_private_keys": {
+                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
               }
             }
           },
-          "description": "Stop query schema",
           "required": true
         },
         "responses": {
@@ -22082,7 +23773,7 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
+                    "message": {
                       "type": "string"
                     }
                   },
@@ -22090,7 +23781,7 @@
                 }
               }
             },
-            "description": "Query stopped"
+            "description": "Saved Query import result"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22098,8 +23789,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -22110,20 +23801,28 @@
             "jwt": []
           }
         ],
-        "summary": "Manually stop a query with client_id",
+        "summary": "Import saved queries with associated databases",
         "tags": [
           "Queries"
         ]
       }
     },
-    "/api/v1/query/updated_since": {
+    "/api/v1/saved_query/related/{column_name}": {
       "get": {
         "parameters": [
+          {
+            "in": "path",
+            "name": "column_name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/queries_get_updated_since_schema"
+                  "$ref": "#/components/schemas/get_related_schema"
                 }
               }
             },
@@ -22136,20 +23835,11 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "properties": {
-                    "result": {
-                      "description": "A List of queries that changed after last_updated_ms",
-                      "items": {
-                        "$ref": "#/components/schemas/QueryRestApi.get"
-                      },
-                      "type": "array"
-                    }
-                  },
-                  "type": "object"
+                  "$ref": "#/components/schemas/RelatedResponseSchema"
                 }
               }
             },
-            "description": "Queries list"
+            "description": "Related column data"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22169,13 +23859,60 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of queries that changed after last_updated_ms",
+        "summary": "Get related fields data",
         "tags": [
           "Queries"
         ]
       }
     },
-    "/api/v1/query/{pk}": {
+    "/api/v1/saved_query/{pk}": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Item deleted"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Delete a saved query",
+        "tags": [
+          "Queries"
+        ]
+      },
       "get": {
         "description": "Get an item model",
         "parameters": [
@@ -22230,7 +23967,7 @@
                       "type": "object"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/QueryRestApi.get"
+                      "$ref": "#/components/schemas/SavedQueryRestApi.get"
                     },
                     "show_columns": {
                       "description": "A list of columns",
@@ -22272,54 +24009,96 @@
             "jwt": []
           }
         ],
-        "summary": "Get query detail information",
+        "summary": "Get a saved query",
         "tags": [
           "Queries"
         ]
-      }
-    },
-    "/api/v1/report/": {
-      "delete": {
+      },
+      "put": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/SavedQueryRestApi.put"
+              }
+            }
+          },
+          "description": "Model schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/SavedQueryRestApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Report Schedule bulk delete"
+            "description": "Item changed"
+          },
+          "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"
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Update a saved query",
+        "tags": [
+          "Queries"
+        ]
+      }
+    },
+    "/api/v1/security/csrf_token/": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "result": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Result contains the CSRF token"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -22330,95 +24109,40 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete report schedules",
+        "summary": "Get the CSRF token",
         "tags": [
-          "Report Schedules"
+          "Security"
         ]
-      },
-      "get": {
-        "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": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
-                }
+      }
+    },
+    "/api/v1/security/guest_token/": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/GuestTokenCreate"
               }
-            },
-            "in": "query",
-            "name": "q"
-          }
-        ],
+            }
+          },
+          "description": "Parameters for the guest token",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
+                    "token": {
                       "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/ReportScheduleRestApi.get_list"
-                      },
-                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
+            "description": "Result contains the guest token"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22426,9 +24150,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -22438,41 +24159,69 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of report schedules",
+        "summary": "Get a guest token",
         "tags": [
-          "Report Schedules"
+          "Security"
         ]
-      },
+      }
+    },
+    "/api/v1/security/login": {
       "post": {
+        "description": "Authenticate and get a JWT access and refresh token",
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/ReportScheduleRestApi.post"
+                "properties": {
+                  "password": {
+                    "description": "The password for authentication",
+                    "example": "complex-password",
+                    "type": "string"
+                  },
+                  "provider": {
+                    "description": "Choose an authentication provider",
+                    "enum": [
+                      "db",
+                      "ldap"
+                    ],
+                    "example": "db",
+                    "type": "string"
+                  },
+                  "refresh": {
+                    "description": "If true a refresh token is provided also",
+                    "example": true,
+                    "type": "boolean"
+                  },
+                  "username": {
+                    "description": "The username for authentication",
+                    "example": "admin",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
               }
             }
           },
-          "description": "Report Schedule schema",
           "required": true
         },
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
+                    "access_token": {
+                      "type": "string"
                     },
-                    "result": {
-                      "$ref": "#/components/schemas/ReportScheduleRestApi.post"
+                    "refresh_token": {
+                      "type": "string"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Report schedule added"
+            "description": "Authentication Successful"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22480,36 +24229,24 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
-          "422": {
-            "$ref": "#/components/responses/422"
-          },
           "500": {
             "$ref": "#/components/responses/500"
           }
         },
-        "security": [
-          {
-            "jwt": []
-          }
-        ],
-        "summary": "Create a report schedule",
         "tags": [
-          "Report Schedules"
+          "Security"
         ]
       }
     },
-    "/api/v1/report/_info": {
+    "/api/v1/security/permissions-resources/": {
       "get": {
-        "description": "Get metadata information about this API resource",
+        "description": "Get a list of models",
         "parameters": [
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -22523,46 +24260,69 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
-                      "type": "object"
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
                     },
-                    "edit_columns": {
+                    "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"
                     },
-                    "filters": {
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "label_columns": {
                       "properties": {
                         "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
+                          "description": "The label for the column name. Will be translated by babel",
+                          "example": "A Nice label for the column",
+                          "type": "string"
                         }
                       },
                       "type": "object"
                     },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/PermissionViewMenuApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22577,50 +24337,45 @@
             "$ref": "#/components/responses/500"
           }
         },
-        "security": [
-          {
-            "jwt": []
-          }
-        ],
-        "summary": "Get metadata information about this API resource",
-        "tags": [
-          "Report Schedules"
-        ]
-      }
-    },
-    "/api/v1/report/related/{column_name}": {
-      "get": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "column_name",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
+        "security": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
+            "jwt": []
           }
         ],
+        "tags": [
+          "Security Permissions on Resources (View Menus)"
+        ]
+      },
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/PermissionViewMenuApi.post"
+              }
+            }
+          },
+          "description": "Model schema",
+          "required": true
+        },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "properties": {
+                    "id": {
+                      "type": "string"
+                    },
+                    "result": {
+                      "$ref": "#/components/schemas/PermissionViewMenuApi.post"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "Item inserted"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22628,8 +24383,8 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -22640,21 +24395,20 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
         "tags": [
-          "Report Schedules"
+          "Security Permissions on Resources (View Menus)"
         ]
       }
     },
-    "/api/v1/report/slack_channels/": {
+    "/api/v1/security/permissions-resources/_info": {
       "get": {
-        "description": "Get slack channels",
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_slack_channels_schema"
+                  "$ref": "#/components/schemas/get_info_schema"
                 }
               }
             },
@@ -22668,17 +24422,37 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "items": {
-                        "properties": {
-                          "id": {
-                            "type": "string"
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
                           },
-                          "name": {
-                            "type": "string"
-                          }
-                        },
-                        "type": "object"
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
                       },
                       "type": "array"
                     }
@@ -22687,17 +24461,14 @@
                 }
               }
             },
-            "description": "Slack channels"
+            "description": "Item from Model"
+          },
+          "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"
           },
@@ -22710,17 +24481,15 @@
             "jwt": []
           }
         ],
-        "summary": "Get slack channels",
         "tags": [
-          "Report Schedules"
+          "Security Permissions on Resources (View Menus)"
         ]
       }
     },
-    "/api/v1/report/{pk}": {
+    "/api/v1/security/permissions-resources/{pk}": {
       "delete": {
         "parameters": [
           {
-            "description": "The report schedule pk",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -22745,9 +24514,6 @@
             },
             "description": "Item deleted"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -22763,9 +24529,8 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a report schedule",
         "tags": [
-          "Report Schedules"
+          "Security Permissions on Resources (View Menus)"
         ]
       },
       "get": {
@@ -22822,7 +24587,7 @@
                       "type": "object"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/ReportScheduleRestApi.get"
+                      "$ref": "#/components/schemas/PermissionViewMenuApi.get"
                     },
                     "show_columns": {
                       "description": "A list of columns",
@@ -22864,15 +24629,13 @@
             "jwt": []
           }
         ],
-        "summary": "Get a report schedule",
         "tags": [
-          "Report Schedules"
+          "Security Permissions on Resources (View Menus)"
         ]
       },
       "put": {
         "parameters": [
           {
-            "description": "The Report Schedule pk",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -22885,11 +24648,11 @@
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/ReportScheduleRestApi.put"
+                "$ref": "#/components/schemas/PermissionViewMenuApi.put"
               }
             }
           },
-          "description": "Report Schedule schema",
+          "description": "Model schema",
           "required": true
         },
         "responses": {
@@ -22898,18 +24661,15 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
-                      "type": "number"
-                    },
                     "result": {
-                      "$ref": "#/components/schemas/ReportScheduleRestApi.put"
+                      "$ref": "#/components/schemas/PermissionViewMenuApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Report Schedule changed"
+            "description": "Item changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -22917,9 +24677,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
           "404": {
             "$ref": "#/components/responses/404"
           },
@@ -22935,25 +24692,15 @@
             "jwt": []
           }
         ],
-        "summary": "Update a report schedule",
         "tags": [
-          "Report Schedules"
+          "Security Permissions on Resources (View Menus)"
         ]
       }
     },
-    "/api/v1/report/{pk}/log/": {
+    "/api/v1/security/permissions/": {
       "get": {
-        "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.",
+        "description": "Get a list of models",
         "parameters": [
-          {
-            "description": "The report schedule id for these logs",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
@@ -22976,17 +24723,142 @@
                       "description": "The total record count on the backend",
                       "type": "number"
                     },
+                    "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"
+                    },
                     "ids": {
-                      "description": "A list of log ids",
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "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"
+                    },
+                    "list_columns": {
+                      "description": "A list of columns",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "list_title": {
+                      "description": "A title to render. Will be translated by babel",
+                      "example": "List Items",
+                      "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
                       "items": {
                         "type": "string"
                       },
-                      "type": "array"
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/PermissionApi.get_list"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Items from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "tags": [
+          "Security Permissions"
+        ]
+      }
+    },
+    "/api/v1/security/permissions/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
                     },
-                    "result": {
-                      "description": "The result from the get list query",
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
                       "items": {
-                        "$ref": "#/components/schemas/ReportExecutionLogRestApi.get_list"
+                        "type": "string"
                       },
                       "type": "array"
                     }
@@ -22995,7 +24867,7 @@
                 }
               }
             },
-            "description": "Items from logs"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23015,17 +24887,16 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of report schedule logs",
         "tags": [
-          "Report Schedules"
+          "Security Permissions"
         ]
       }
     },
-    "/api/v1/report/{pk}/log/{log_id}": {
+    "/api/v1/security/permissions/{pk}": {
       "get": {
+        "description": "Get an item model",
         "parameters": [
           {
-            "description": "The report schedule pk for log",
             "in": "path",
             "name": "pk",
             "required": true,
@@ -23033,15 +24904,6 @@
               "type": "integer"
             }
           },
-          {
-            "description": "The log pk",
-            "in": "path",
-            "name": "log_id",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
@@ -23060,19 +24922,51 @@
               "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 log 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/ReportExecutionLogRestApi.get"
+                      "$ref": "#/components/schemas/PermissionApi.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 log"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23095,34 +24989,22 @@
             "jwt": []
           }
         ],
-        "summary": "Get a report schedule log",
         "tags": [
-          "Report Schedules"
+          "Security Permissions"
         ]
       }
     },
-    "/api/v1/rowlevelsecurity/": {
-      "delete": {
-        "parameters": [
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
-          }
-        ],
+    "/api/v1/security/refresh": {
+      "post": {
+        "description": "Use the refresh token to get a new JWT access token",
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
+                    "access_token": {
+                      "description": "A new refreshed access token",
                       "type": "string"
                     }
                   },
@@ -23130,36 +25012,28 @@
                 }
               }
             },
-            "description": "RLS Rule bulk delete"
+            "description": "Refresh Successful"
           },
           "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": []
+            "jwt_refresh": []
           }
         ],
-        "summary": "Bulk delete RLS rules",
         "tags": [
-          "Row Level Security"
+          "Security"
         ]
-      },
+      }
+    },
+    "/api/v1/security/resources/": {
       "get": {
-        "description": "Gets a list of RLS, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.",
+        "description": "Get a list of models",
         "parameters": [
           {
             "content": {
@@ -23232,7 +25106,7 @@
                     "result": {
                       "description": "The result from the get list query",
                       "items": {
-                        "$ref": "#/components/schemas/RLSRestApi.get_list"
+                        "$ref": "#/components/schemas/ViewMenuApi.get_list"
                       },
                       "type": "array"
                     }
@@ -23261,9 +25135,8 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of RLS",
         "tags": [
-          "Row Level Security"
+          "Security Resources (View Menus)"
         ]
       },
       "post": {
@@ -23271,11 +25144,11 @@
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/RLSRestApi.post"
+                "$ref": "#/components/schemas/ViewMenuApi.post"
               }
             }
           },
-          "description": "RLS schema",
+          "description": "Model schema",
           "required": true
         },
         "responses": {
@@ -23285,17 +25158,17 @@
                 "schema": {
                   "properties": {
                     "id": {
-                      "type": "number"
+                      "type": "string"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/RLSRestApi.post"
+                      "$ref": "#/components/schemas/ViewMenuApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "RLS Rule added"
+            "description": "Item inserted"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23303,9 +25176,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -23318,13 +25188,12 @@
             "jwt": []
           }
         ],
-        "summary": "Create a new RLS rule",
         "tags": [
-          "Row Level Security"
+          "Security Resources (View Menus)"
         ]
       }
     },
-    "/api/v1/rowlevelsecurity/_info": {
+    "/api/v1/security/resources/_info": {
       "get": {
         "description": "Get metadata information about this API resource",
         "parameters": [
@@ -23405,28 +25274,74 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Row Level Security"
+          "Security Resources (View Menus)"
         ]
       }
     },
-    "/api/v1/rowlevelsecurity/related/{column_name}": {
+    "/api/v1/security/resources/{pk}": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Item deleted"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "tags": [
+          "Security Resources (View Menus)"
+        ]
+      },
       "get": {
+        "description": "Get an item model",
         "parameters": [
           {
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
           },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
@@ -23439,11 +25354,52 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "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/ViewMenuApi.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": "Related column data"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23454,6 +25410,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -23463,14 +25422,11 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
         "tags": [
-          "Row Level Security"
+          "Security Resources (View Menus)"
         ]
-      }
-    },
-    "/api/v1/rowlevelsecurity/{pk}": {
-      "delete": {
+      },
+      "put": {
         "parameters": [
           {
             "in": "path",
@@ -23481,21 +25437,38 @@
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ViewMenuApi.put"
+              }
+            }
+          },
+          "description": "Model schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/ViewMenuApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item deleted"
+            "description": "Item changed"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
           },
           "404": {
             "$ref": "#/components/responses/404"
@@ -23512,27 +25485,20 @@
             "jwt": []
           }
         ],
-        "summary": "Delete an RLS",
         "tags": [
-          "Row Level Security"
+          "Security Resources (View Menus)"
         ]
-      },
+      }
+    },
+    "/api/v1/security/roles/": {
       "get": {
-        "description": "Get an item model",
+        "description": "Get a list of models",
         "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -23546,6 +25512,10 @@
               "application/json": {
                 "schema": {
                   "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -23556,9 +25526,12 @@
                       },
                       "type": "object"
                     },
-                    "id": {
-                      "description": "The item id",
-                      "type": "string"
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     },
                     "label_columns": {
                       "properties": {
@@ -23570,27 +25543,38 @@
                       },
                       "type": "object"
                     },
-                    "result": {
-                      "$ref": "#/components/schemas/RLSRestApi.get"
-                    },
-                    "show_columns": {
+                    "list_columns": {
                       "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "show_title": {
+                    "list_title": {
                       "description": "A title to render. Will be translated by babel",
-                      "example": "Show Item Details",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/SupersetRoleApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23598,9 +25582,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -23613,52 +25594,40 @@
             "jwt": []
           }
         ],
-        "summary": "Get an RLS",
         "tags": [
-          "Row Level Security"
+          "Security Roles"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "description": "The Rule pk",
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/RLSRestApi.put"
+                "$ref": "#/components/schemas/SupersetRoleApi.post"
               }
             }
           },
-          "description": "RLS schema",
+          "description": "Model schema",
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
                     "id": {
-                      "type": "number"
+                      "type": "string"
                     },
                     "result": {
-                      "$ref": "#/components/schemas/RLSRestApi.put"
+                      "$ref": "#/components/schemas/SupersetRoleApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Rule changed"
+            "description": "Item inserted"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -23666,12 +25635,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "403": {
-            "$ref": "#/components/responses/403"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -23684,20 +25647,20 @@
             "jwt": []
           }
         ],
-        "summary": "Update an RLS rule",
         "tags": [
-          "Row Level Security"
+          "Security Roles"
         ]
       }
     },
-    "/api/v1/saved_query/": {
-      "delete": {
+    "/api/v1/security/roles/_info": {
+      "get": {
+        "description": "Get metadata information about this API resource",
         "parameters": [
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_delete_ids_schema"
+                  "$ref": "#/components/schemas/get_info_schema"
                 }
               }
             },
@@ -23711,22 +25674,53 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Saved queries bulk delete"
+            "description": "Item from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -23739,107 +25733,108 @@
             "jwt": []
           }
         ],
-        "summary": "Bulk delete saved queries",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
-      },
+      }
+    },
+    "/api/v1/security/roles/search/": {
       "get": {
-        "description": "Gets a list of saved queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.",
+        "description": "Fetch a paginated list of roles with user and permission IDs.",
         "parameters": [
           {
+            "in": "query",
+            "name": "q",
+            "schema": {
+              "properties": {
+                "filters": {
+                  "items": {
+                    "properties": {
+                      "col": {
+                        "enum": [
+                          "user_ids",
+                          "permission_ids",
+                          "name"
+                        ],
+                        "type": "string"
+                      },
+                      "value": {
+                        "type": "string"
+                      }
+                    },
+                    "type": "object"
+                  },
+                  "type": "array"
+                },
+                "order_column": {
+                  "default": "id",
+                  "enum": [
+                    "id",
+                    "name"
+                  ],
+                  "type": "string"
+                },
+                "order_direction": {
+                  "default": "asc",
+                  "enum": [
+                    "asc",
+                    "desc"
+                  ],
+                  "type": "string"
+                },
+                "page": {
+                  "default": 0,
+                  "type": "integer"
+                },
+                "page_size": {
+                  "default": 10,
+                  "type": "integer"
+                }
+              },
+              "type": "object"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_list_schema"
+                  "$ref": "#/components/schemas/RolesResponseSchema"
                 }
               }
             },
-            "in": "query",
-            "name": "q"
-          }
-        ],
-        "responses": {
-          "200": {
+            "description": "Successfully retrieved roles"
+          },
+          "400": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "count": {
-                      "description": "The total record count on the backend",
-                      "type": "number"
-                    },
-                    "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"
-                    },
-                    "ids": {
-                      "description": "A list of item ids, useful when you don't know the column id",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "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"
-                    },
-                    "list_columns": {
-                      "description": "A list of columns",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "list_title": {
-                      "description": "A title to render. Will be translated by babel",
-                      "example": "List Items",
+                    "error": {
                       "type": "string"
-                    },
-                    "order_columns": {
-                      "description": "A list of allowed columns to sort",
-                      "items": {
-                        "type": "string"
-                      },
-                      "type": "array"
-                    },
-                    "result": {
-                      "description": "The result from the get list query",
-                      "items": {
-                        "$ref": "#/components/schemas/SavedQueryRestApi.get_list"
-                      },
-                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Items from Model"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "422": {
-            "$ref": "#/components/responses/422"
+            "description": "Bad request (invalid input)"
           },
-          "500": {
-            "$ref": "#/components/responses/500"
+          "403": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "error": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Forbidden"
           }
         },
         "security": [
@@ -23847,47 +25842,42 @@
             "jwt": []
           }
         ],
-        "summary": "Get a list of saved queries",
+        "summary": "List roles",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
-      },
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/SavedQueryRestApi.post"
-              }
+      }
+    },
+    "/api/v1/security/roles/{pk}": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
             }
-          },
-          "description": "Model schema",
-          "required": true
-        },
+          }
+        ],
         "responses": {
-          "201": {
+          "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "id": {
+                    "message": {
                       "type": "string"
-                    },
-                    "result": {
-                      "$ref": "#/components/schemas/SavedQueryRestApi.post"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item inserted"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
+            "description": "Item deleted"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
           "422": {
             "$ref": "#/components/responses/422"
@@ -23901,21 +25891,26 @@
             "jwt": []
           }
         ],
-        "summary": "Create a saved query",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
-      }
-    },
-    "/api/v1/saved_query/_info": {
+      },
       "get": {
-        "description": "Get metadata information about this API resource",
+        "description": "Get an item model",
         "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_info_schema"
+                  "$ref": "#/components/schemas/get_item_schema"
                 }
               }
             },
@@ -23929,39 +25924,44 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "add_columns": {
+                    "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"
                     },
-                    "edit_columns": {
-                      "type": "object"
+                    "id": {
+                      "description": "The item id",
+                      "type": "string"
                     },
-                    "filters": {
+                    "label_columns": {
                       "properties": {
                         "column_name": {
-                          "items": {
-                            "properties": {
-                              "name": {
-                                "description": "The filter name. Will be translated by babel",
-                                "type": "string"
-                              },
-                              "operator": {
-                                "description": "The filter operation key to use on list filters",
-                                "type": "string"
-                              }
-                            },
-                            "type": "object"
-                          },
-                          "type": "array"
+                          "description": "The label for the column name. Will be translated by babel",
+                          "example": "A Nice label for the column",
+                          "type": "string"
                         }
                       },
                       "type": "object"
                     },
-                    "permissions": {
-                      "description": "The user permissions for this API resource",
+                    "result": {
+                      "$ref": "#/components/schemas/SupersetRoleApi.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"
@@ -23976,6 +25976,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -23988,45 +25991,47 @@
             "jwt": []
           }
         ],
-        "summary": "Get metadata information about this API resource",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
-      }
-    },
-    "/api/v1/saved_query/distinct/{column_name}": {
-      "get": {
+      },
+      "put": {
         "parameters": [
           {
             "in": "path",
-            "name": "column_name",
+            "name": "pk",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/SupersetRoleApi.put"
+              }
+            }
+          },
+          "description": "Model schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DistincResponseSchema"
+                  "properties": {
+                    "result": {
+                      "$ref": "#/components/schemas/SupersetRoleApi.put"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Distinct field data"
+            "description": "Item changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24037,6 +26042,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -24046,100 +26054,32 @@
             "jwt": []
           }
         ],
-        "summary": "Get distinct values from field data",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
       }
     },
-    "/api/v1/saved_query/export/": {
-      "get": {
+    "/api/v1/security/roles/{role_id}/permissions": {
+      "post": {
         "parameters": [
           {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_export_ids_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/zip": {
-                "schema": {
-                  "format": "binary",
-                  "type": "string"
-                }
-              }
-            },
-            "description": "A zip file with saved query(ies) and database(s) as YAML"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          },
-          "401": {
-            "$ref": "#/components/responses/401"
-          },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
-          "500": {
-            "$ref": "#/components/responses/500"
-          }
-        },
-        "security": [
-          {
-            "jwt": []
+            "in": "path",
+            "name": "role_id",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
           }
         ],
-        "summary": "Download multiple saved queries as YAML files",
-        "tags": [
-          "Queries"
-        ]
-      }
-    },
-    "/api/v1/saved_query/import/": {
-      "post": {
         "requestBody": {
           "content": {
-            "multipart/form-data": {
+            "application/json": {
               "schema": {
-                "properties": {
-                  "formData": {
-                    "description": "upload file (ZIP)",
-                    "format": "binary",
-                    "type": "string"
-                  },
-                  "overwrite": {
-                    "description": "overwrite existing saved queries?",
-                    "type": "boolean"
-                  },
-                  "passwords": {
-                    "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_passwords": {
-                    "description": "JSON map of passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_key_passwords": {
-                    "description": "JSON map of private_key_passwords for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key_password\"}`.",
-                    "type": "string"
-                  },
-                  "ssh_tunnel_private_keys": {
-                    "description": "JSON map of private_keys for each ssh_tunnel associated to a featured database in the ZIP file. If the ZIP includes a ssh_tunnel config in the path `databases/MyDatabase.yaml`, the private_key should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_private_key\"}`.",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
+                "$ref": "#/components/schemas/RolePermissionPostSchema"
               }
             }
           },
+          "description": "Add role permissions schema",
           "required": true
         },
         "responses": {
@@ -24148,15 +26088,15 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/RolePermissionPostSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Saved Query import result"
+            "description": "Permissions added"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24164,6 +26104,9 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -24176,33 +26119,21 @@
             "jwt": []
           }
         ],
-        "summary": "Import saved queries with associated databases",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
       }
     },
-    "/api/v1/saved_query/related/{column_name}": {
+    "/api/v1/security/roles/{role_id}/permissions/": {
       "get": {
         "parameters": [
           {
             "in": "path",
-            "name": "column_name",
+            "name": "role_id",
             "required": true,
             "schema": {
-              "type": "string"
+              "type": "integer"
             }
-          },
-          {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/get_related_schema"
-                }
-              }
-            },
-            "in": "query",
-            "name": "q"
           }
         ],
         "responses": {
@@ -24210,11 +26141,16 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/RelatedResponseSchema"
+                  "properties": {
+                    "result": {
+                      "$ref": "#/components/schemas/RolePermissionListSchema"
+                    }
+                  },
+                  "type": "object"
                 }
               }
             },
-            "description": "Related column data"
+            "description": "List of permissions"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24225,6 +26161,9 @@
           "404": {
             "$ref": "#/components/responses/404"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -24234,39 +26173,55 @@
             "jwt": []
           }
         ],
-        "summary": "Get related fields data",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
       }
     },
-    "/api/v1/saved_query/{pk}": {
-      "delete": {
+    "/api/v1/security/roles/{role_id}/users": {
+      "put": {
         "parameters": [
           {
             "in": "path",
-            "name": "pk",
+            "name": "role_id",
             "required": true,
             "schema": {
               "type": "integer"
             }
           }
         ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/RoleUserPutSchema"
+              }
+            }
+          },
+          "description": "Update role users schema",
+          "required": true
+        },
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "message": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/RoleUserPutSchema"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item deleted"
+            "description": "Role users updated"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
           },
           "404": {
             "$ref": "#/components/responses/404"
@@ -24283,27 +26238,20 @@
             "jwt": []
           }
         ],
-        "summary": "Delete a saved query",
         "tags": [
-          "Queries"
+          "Security Roles"
         ]
-      },
+      }
+    },
+    "/api/v1/security/users/": {
       "get": {
-        "description": "Get an item model",
+        "description": "Get a list of models",
         "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          },
           {
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/get_item_schema"
+                  "$ref": "#/components/schemas/get_list_schema"
                 }
               }
             },
@@ -24317,6 +26265,10 @@
               "application/json": {
                 "schema": {
                   "properties": {
+                    "count": {
+                      "description": "The total record count on the backend",
+                      "type": "number"
+                    },
                     "description_columns": {
                       "properties": {
                         "column_name": {
@@ -24327,9 +26279,12 @@
                       },
                       "type": "object"
                     },
-                    "id": {
-                      "description": "The item id",
-                      "type": "string"
+                    "ids": {
+                      "description": "A list of item ids, useful when you don't know the column id",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     },
                     "label_columns": {
                       "properties": {
@@ -24341,27 +26296,38 @@
                       },
                       "type": "object"
                     },
-                    "result": {
-                      "$ref": "#/components/schemas/SavedQueryRestApi.get"
-                    },
-                    "show_columns": {
+                    "list_columns": {
                       "description": "A list of columns",
                       "items": {
                         "type": "string"
                       },
                       "type": "array"
                     },
-                    "show_title": {
+                    "list_title": {
                       "description": "A title to render. Will be translated by babel",
-                      "example": "Show Item Details",
+                      "example": "List Items",
                       "type": "string"
+                    },
+                    "order_columns": {
+                      "description": "A list of allowed columns to sort",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "result": {
+                      "description": "The result from the get list query",
+                      "items": {
+                        "$ref": "#/components/schemas/SupersetUserApi.get_list"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Item from Model"
+            "description": "Items from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24369,9 +26335,6 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "404": {
-            "$ref": "#/components/responses/404"
-          },
           "422": {
             "$ref": "#/components/responses/422"
           },
@@ -24384,27 +26347,16 @@
             "jwt": []
           }
         ],
-        "summary": "Get a saved query",
         "tags": [
-          "Queries"
+          "Security Users"
         ]
       },
-      "put": {
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pk",
-            "required": true,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
+      "post": {
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "$ref": "#/components/schemas/SavedQueryRestApi.put"
+                "$ref": "#/components/schemas/SupersetUserApi.post"
               }
             }
           },
@@ -24412,13 +26364,13 @@
           "required": true
         },
         "responses": {
-          "200": {
+          "201": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
                     "result": {
-                      "$ref": "#/components/schemas/SavedQueryRestApi.put"
+                      "$ref": "#/components/schemas/SupersetUserApi.post"
                     }
                   },
                   "type": "object"
@@ -24448,33 +26400,83 @@
             "jwt": []
           }
         ],
-        "summary": "Update a saved query",
         "tags": [
-          "Queries"
+          "Security Users"
         ]
       }
     },
-    "/api/v1/security/csrf_token/": {
+    "/api/v1/security/users/_info": {
       "get": {
+        "description": "Get metadata information about this API resource",
+        "parameters": [
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_info_schema"
+                }
+              }
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "result": {
-                      "type": "string"
+                    "add_columns": {
+                      "type": "object"
+                    },
+                    "edit_columns": {
+                      "type": "object"
+                    },
+                    "filters": {
+                      "properties": {
+                        "column_name": {
+                          "items": {
+                            "properties": {
+                              "name": {
+                                "description": "The filter name. Will be translated by babel",
+                                "type": "string"
+                              },
+                              "operator": {
+                                "description": "The filter operation key to use on list filters",
+                                "type": "string"
+                              }
+                            },
+                            "type": "object"
+                          },
+                          "type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "permissions": {
+                      "description": "The user permissions for this API resource",
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Result contains the CSRF token"
+            "description": "Item from Model"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
           },
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -24484,32 +26486,124 @@
             "jwt": []
           }
         ],
-        "summary": "Get the CSRF token",
         "tags": [
-          "Security"
+          "Security Users"
         ]
       }
     },
-    "/api/v1/security/guest_token/": {
-      "post": {
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/GuestTokenCreate"
+    "/api/v1/security/users/{pk}": {
+      "delete": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Item deleted"
+          },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "tags": [
+          "Security Users"
+        ]
+      },
+      "get": {
+        "description": "Get an item model",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/get_item_schema"
+                }
               }
-            }
-          },
-          "description": "Parameters for the guest token",
-          "required": true
-        },
+            },
+            "in": "query",
+            "name": "q"
+          }
+        ],
         "responses": {
           "200": {
             "content": {
               "application/json": {
                 "schema": {
                   "properties": {
-                    "token": {
+                    "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/SupersetUserApi.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"
                     }
                   },
@@ -24517,7 +26611,7 @@
                 }
               }
             },
-            "description": "Result contains the guest token"
+            "description": "Item from Model"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24525,6 +26619,12 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
+          "404": {
+            "$ref": "#/components/responses/404"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
           "500": {
             "$ref": "#/components/responses/500"
           }
@@ -24534,49 +26634,30 @@
             "jwt": []
           }
         ],
-        "summary": "Get a guest token",
         "tags": [
-          "Security"
+          "Security Users"
         ]
-      }
-    },
-    "/api/v1/security/login": {
-      "post": {
-        "description": "Authenticate and get a JWT access and refresh token",
+      },
+      "put": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pk",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "properties": {
-                  "password": {
-                    "description": "The password for authentication",
-                    "example": "complex-password",
-                    "type": "string"
-                  },
-                  "provider": {
-                    "description": "Choose an authentication provider",
-                    "enum": [
-                      "db",
-                      "ldap"
-                    ],
-                    "example": "db",
-                    "type": "string"
-                  },
-                  "refresh": {
-                    "description": "If true a refresh token is provided also",
-                    "example": true,
-                    "type": "boolean"
-                  },
-                  "username": {
-                    "description": "The username for authentication",
-                    "example": "admin",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
+                "$ref": "#/components/schemas/SupersetUserApi.put"
               }
             }
           },
+          "description": "Model schema",
           "required": true
         },
         "responses": {
@@ -24585,18 +26666,15 @@
               "application/json": {
                 "schema": {
                   "properties": {
-                    "access_token": {
-                      "type": "string"
-                    },
-                    "refresh_token": {
-                      "type": "string"
+                    "result": {
+                      "$ref": "#/components/schemas/SupersetUserApi.put"
                     }
                   },
                   "type": "object"
                 }
               }
             },
-            "description": "Authentication Successful"
+            "description": "Item changed"
           },
           "400": {
             "$ref": "#/components/responses/400"
@@ -24604,37 +26682,11 @@
           "401": {
             "$ref": "#/components/responses/401"
           },
-          "500": {
-            "$ref": "#/components/responses/500"
-          }
-        },
-        "tags": [
-          "Security"
-        ]
-      }
-    },
-    "/api/v1/security/refresh": {
-      "post": {
-        "description": "Use the refresh token to get a new JWT access token",
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "access_token": {
-                      "description": "A new refreshed access token",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Refresh Successful"
+          "404": {
+            "$ref": "#/components/responses/404"
           },
-          "401": {
-            "$ref": "#/components/responses/401"
+          "422": {
+            "$ref": "#/components/responses/422"
           },
           "500": {
             "$ref": "#/components/responses/500"
@@ -24642,11 +26694,11 @@
         },
         "security": [
           {
-            "jwt_refresh": []
+            "jwt": []
           }
         ],
         "tags": [
-          "Security"
+          "Security Users"
         ]
       }
     },
@@ -24906,6 +26958,119 @@
         ]
       }
     },
+    "/api/v1/sqllab/permalink": {
+      "post": {
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ExplorePermalinkStateSchema"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "201": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "key": {
+                      "description": "The key to retrieve the permanent link data.",
+                      "type": "string"
+                    },
+                    "url": {
+                      "description": "permanent link.",
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "The permanent link was stored successfully."
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          }
+        ],
+        "summary": "Create a new permanent link",
+        "tags": [
+          "SQL Lab Permanent Link"
+        ]
+      }
+    },
+    "/api/v1/sqllab/permalink/{key}": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "state": {
+                      "description": "The stored state",
+                      "type": "object"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Returns the stored form_data."
+          },
+          "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": "Get permanent link state for SQLLab editor.",
+        "tags": [
+          "SQL Lab Permanent Link"
+        ]
+      }
+    },
     "/api/v1/sqllab/results/": {
       "get": {
         "parameters": [