{
  "/api/v1/dashboard/": {
    "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": "Dashboard 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"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Bulk delete dashboards",
      "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": [
        {
          "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/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"
                  }
                },
                "type": "object"
              }
            }
          },
          "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"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Check favorited dashboards for current user",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/import/": {
    "post": {
      "requestBody": {
        "content": {
          "multipart/form-data": {
            "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"
            }
          }
        },
        "required": true
      },
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard import result"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "422": {
          "$ref": "#/components/responses/422"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Import dashboard(s) with associated charts/datasets/databases",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/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 state."
        },
        "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 dashboard's permanent link state",
      "tags": [
        "Dashboard Permanent Link"
      ]
    }
  },
  "/api/v1/dashboard/related/{column_name}": {
    "get": {
      "description": "Get a list of all possible owners for a dashboard.",
      "parameters": [
        {
          "in": "path",
          "name": "column_name",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/get_related_schema"
              }
            }
          },
          "in": "query",
          "name": "q"
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedResponseSchema"
              }
            }
          },
          "description": "Related column data"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Get related fields data",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{id_or_slug}": {
    "get": {
      "parameters": [
        {
          "description": "Either the id of the dashboard, or its slug",
          "in": "path",
          "name": "id_or_slug",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "$ref": "#/components/schemas/DashboardGetResponseSchema"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard"
        },
        "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 detail information",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{id_or_slug}/charts": {
    "get": {
      "parameters": [
        {
          "in": "path",
          "name": "id_or_slug",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "items": {
                      "$ref": "#/components/schemas/ChartEntityResponseSchema"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "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": {
                  "id": {
                    "type": "number"
                  },
                  "last_modified_time": {
                    "type": "number"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Id of new dashboard and last modified time"
        },
        "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": "Create a copy of an existing dashboard",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/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",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "items": {
                      "$ref": "#/components/schemas/DashboardDatasetSchema"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard dataset 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 dashboard's datasets",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{id_or_slug}/embedded": {
    "delete": {
      "parameters": [
        {
          "description": "The dashboard id or slug",
          "in": "path",
          "name": "id_or_slug",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Successfully removed the configuration"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Delete a dashboard's embedded configuration",
      "tags": [
        "Dashboards"
      ]
    },
    "get": {
      "parameters": [
        {
          "description": "The dashboard id or slug",
          "in": "path",
          "name": "id_or_slug",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                  }
                },
                "type": "object"
              }
            }
          },
          "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": {
                  "result": {
                    "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Successfully set the configuration"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Set a dashboard's embedded configuration",
      "tags": [
        "Dashboards"
      ]
    },
    "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/EmbeddedDashboardConfig"
            }
          }
        },
        "description": "The embedded configuration to set",
        "required": true
      },
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "$ref": "#/components/schemas/EmbeddedDashboardResponseSchema"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Successfully set the configuration"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{id_or_slug}/tabs": {
    "get": {
      "description": "Returns a list of a dashboard's tabs and dashboard's nested tree structure for associated tabs.",
      "parameters": [
        {
          "description": "Either the id of the dashboard, or its slug",
          "in": "path",
          "name": "id_or_slug",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "items": {
                      "$ref": "#/components/schemas/TabsPayloadSchema"
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard tabs"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "403": {
          "$ref": "#/components/responses/403"
        },
        "404": {
          "$ref": "#/components/responses/404"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Get dashboard's tabs",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}": {
    "delete": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard 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"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Delete a dashboard",
      "tags": [
        "Dashboards"
      ]
    },
    "put": {
      "parameters": [
        {
          "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": {
                "properties": {
                  "id": {
                    "type": "number"
                  },
                  "last_modified_time": {
                    "type": "number"
                  },
                  "result": {
                    "$ref": "#/components/schemas/DashboardRestApi.put"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard 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"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Update a dashboard",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/cache_dashboard_screenshot/": {
    "post": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "requestBody": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DashboardScreenshotPostSchema"
            }
          }
        }
      },
      "responses": {
        "202": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardCacheScreenshotResponseSchema"
              }
            }
          },
          "description": "Dashboard async result"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Compute and cache a screenshot",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/colors": {
    "put": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "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": {
                  "result": {
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard colors updated"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "403": {
          "$ref": "#/components/responses/403"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "422": {
          "$ref": "#/components/responses/422"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Update colors configuration for a dashboard.",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/favorites/": {
    "delete": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "type": "object"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard removed from favorites"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Remove the dashboard from the user favorite list",
      "tags": [
        "Dashboards"
      ]
    },
    "post": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "type": "object"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard added to favorites"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Mark the dashboard as favorite for the current user",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/filter_state": {
    "post": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "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": {
        "201": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The key to retrieve the value.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "The value 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 dashboard's filter state",
      "tags": [
        "Dashboard Filter State"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/filter_state/{key}": {
    "delete": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "description": "The value key.",
          "in": "path",
          "name": "key",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "description": "The result of the operation",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Deleted the stored value."
        },
        "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": "Delete a dashboard's filter state value",
      "tags": [
        "Dashboard Filter State"
      ]
    },
    "get": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "in": "path",
          "name": "key",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "value": {
                    "description": "The stored value",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Returns the stored value."
        },
        "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 a dashboard's filter state value",
      "tags": [
        "Dashboard Filter State"
      ]
    },
    "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"
          }
        }
      ],
      "requestBody": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TemporaryCachePutSchema"
            }
          }
        },
        "required": true
      },
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The key to retrieve the value.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "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"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Update a dashboard's filter state value",
      "tags": [
        "Dashboard Filter State"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/filters": {
    "put": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "requestBody": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DashboardNativeFiltersConfigUpdateSchema"
            }
          }
        },
        "description": "Native filters configuration",
        "required": true
      },
      "responses": {
        "200": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "result": {
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "description": "Dashboard native filters updated"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "403": {
          "$ref": "#/components/responses/403"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "422": {
          "$ref": "#/components/responses/422"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Update native filters configuration for a dashboard.",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/permalink": {
    "post": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "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/DashboardPermalinkStateSchema"
            }
          }
        },
        "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 dashboard's permanent link",
      "tags": [
        "Dashboard Permanent Link"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/screenshot/{digest}/": {
    "get": {
      "parameters": [
        {
          "in": "path",
          "name": "pk",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "in": "path",
          "name": "digest",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "query",
          "name": "download_format",
          "schema": {
            "enum": [
              "png",
              "pdf"
            ],
            "type": "string"
          }
        }
      ],
      "responses": {
        "200": {
          "content": {
            "image/*": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "description": "Dashboard thumbnail image"
        },
        "400": {
          "$ref": "#/components/responses/400"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Get a computed screenshot from cache",
      "tags": [
        "Dashboards"
      ]
    }
  },
  "/api/v1/dashboard/{pk}/thumbnail/{digest}/": {
    "get": {
      "description": "Computes async or get already computed dashboard thumbnail from cache.",
      "parameters": [
        {
          "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"
          }
        }
      ],
      "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"
        },
        "302": {
          "description": "Redirects to the current digest"
        },
        "401": {
          "$ref": "#/components/responses/401"
        },
        "404": {
          "$ref": "#/components/responses/404"
        },
        "422": {
          "$ref": "#/components/responses/422"
        },
        "500": {
          "$ref": "#/components/responses/500"
        }
      },
      "security": [
        {
          "jwt": []
        }
      ],
      "summary": "Get dashboard's thumbnail",
      "tags": [
        "Dashboards"
      ]
    }
  }
}\n