{ "/api/v1/chart/": { "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": "Charts 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 charts", "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" } } }, "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/ChartRestApi.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 charts", "tags": [ "Charts" ] }, "post": { "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartRestApi.post" } } }, "description": "Chart schema", "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "properties": { "id": { "type": "number" }, "result": { "$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": "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": [ "Charts" ] } }, "/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/ChartDataResponseSchema" } } }, "description": "Query result" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" } } }, "description": "Async job details" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "500": { "$ref": "#/components/responses/500" } }, "security": [ { "jwt": [] } ], "summary": "Return payload data response for the given query", "tags": [ "Charts" ] } }, "/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" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartDataResponseSchema" } } }, "description": "Query result" }, "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": "Return payload data response for the given query", "tags": [ "Charts" ] } }, "/api/v1/chart/export/": { "get": { "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 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" } }, "security": [ { "jwt": [] } ], "summary": "Download multiple charts as YAML files", "tags": [ "Charts" ] } }, "/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": { "$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 charts for current user", "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" } } }, "required": true }, "responses": { "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" } }, "security": [ { "jwt": [] } ], "summary": "Import chart(s) with associated datasets and databases", "tags": [ "Charts" ] } }, "/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_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": [ "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" } } }, "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": { "$ref": "#/components/schemas/ChartCacheWarmUpResponseSchema" } } }, "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 the chart", "tags": [ "Charts" ] } }, "/api/v1/chart/{id_or_uuid}": { "get": { "description": "Get a chart", "parameters": [ { "description": "Either the id of the chart, or its uuid", "in": "path", "name": "id_or_uuid", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "result": { "$ref": "#/components/schemas/ChartGetResponseSchema" } }, "type": "object" } } }, "description": "Chart" }, "302": { "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" } }, "security": [ { "jwt": [] } ], "summary": "Get a chart detail information", "tags": [ "Charts" ] } }, "/api/v1/chart/{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": "Chart 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": "Delete a chart", "tags": [ "Charts" ] }, "put": { "parameters": [ { "in": "path", "name": "pk", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartRestApi.put" } } }, "description": "Chart schema", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "id": { "type": "number" }, "result": { "$ref": "#/components/schemas/ChartRestApi.put" } }, "type": "object" } } }, "description": "Chart 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 chart", "tags": [ "Charts" ] } }, "/api/v1/chart/{pk}/cache_screenshot/": { "get": { "parameters": [ { "in": "path", "name": "pk", "required": true, "schema": { "type": "integer" } }, { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/screenshot_query_schema" } } }, "in": "query", "name": "q" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema" } } }, "description": "Chart async result" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema" } } }, "description": "Chart screenshot task created" }, "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": [ "Charts" ] } }, "/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/ChartDataResponseSchema" } } }, "description": "Query result" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" } } }, "description": "Async job details" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "500": { "$ref": "#/components/responses/500" } }, "security": [ { "jwt": [] } ], "summary": "Return payload data response for a chart", "tags": [ "Charts" ] } }, "/api/v1/chart/{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": "Chart removed from favorites" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "security": [ { "jwt": [] } ], "summary": "Remove the chart from the user favorite list", "tags": [ "Charts" ] }, "post": { "parameters": [ { "in": "path", "name": "pk", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "result": { "type": "object" } }, "type": "object" } } }, "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" } } ], "responses": { "200": { "content": { "image/*": { "schema": { "format": "binary", "type": "string" } } }, "description": "Chart screenshot 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": [ "Charts" ] } }, "/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": "A hex digest that makes this chart unique", "in": "path", "name": "digest", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "image/*": { "schema": { "format": "binary", "type": "string" } } }, "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" }, "500": { "$ref": "#/components/responses/500" } }, "security": [ { "jwt": [] } ], "summary": "Get chart thumbnail", "tags": [ "Charts" ] } } }\n