diff --git a/_docs/master/api.html b/_docs/master/api.html index c96928f667..d94a040518 100644 --- a/_docs/master/api.html +++ b/_docs/master/api.html @@ -113,6 +113,105 @@ }, "required" : [ "zoom", "x", "y", "lat-field", "lon-field" ] }, + "gsheets.response" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "error" : { + "type" : "boolean" + }, + "message" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "error", "message" ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { } + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "sync_started_at" : { + "type" : "integer", + "minimum" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "sync_started_at", "created_by_id", "db_id" ] + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "last_sync_at" : { + "type" : "integer", + "minimum" : 1 + }, + "next_sync_at" : { + "type" : "integer", + "minimum" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "last_sync_at", "next_sync_at", "created_by_id", "db_id" ] + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "error_message" : { + "type" : "string", + "minLength" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "error_message", "created_by_id", "db_id" ] + } ] + } ] + }, "metabase-enterprise.metabot-v3.client.schema.message" : { "allOf" : [ { "type" : "object", @@ -198,10 +297,126 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.answer-sources-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-metric" + } + }, + "models" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-table" + } + } + }, + "required" : [ "metrics", "models" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.basic-metric" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.basic-table" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "fields" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "id" : { + "type" : "integer" + }, + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-metric" + } + }, + "name" : { + "type" : "string" + }, + "type" : { + "type" : "string", + "enum" : [ "model", "table" ] + } + }, + "required" : [ "id", "type", "name", "fields" ] + }, "metabase-enterprise.metabot-v3.tools.api.bucket" : { "type" : "string", "enum" : [ "millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "second-of-minute", "minute-of-hour", "hour-of-day", "day-of-week", "day-of-month", "day-of-year", "week-of-year", "month-of-year", "quarter-of-year", "year-of-era" ] }, + "metabase-enterprise.metabot-v3.tools.api.column" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "field_id" : { + "type" : "string" + }, + "field_values" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-values" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "type" : "string" + }, + "type" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-type" + } + }, + "required" : [ "field_id", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.columns" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "metabase-enterprise.metabot-v3.tools.api.count" : { + "type" : "integer" + }, "metabase-enterprise.metabot-v3.tools.api.create-dashboard-subscription-arguments" : { "allOf" : [ { "type" : "object", @@ -364,6 +579,28 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.field-type" : { + "type" : "string", + "enum" : [ "boolean", "date", "datetime", "time", "number", "string" ] + }, + "metabase-enterprise.metabot-v3.tools.api.field-values" : { + "anyOf" : [ { + "type" : "array", + "items" : { + "type" : "boolean" + } + }, { + "type" : "array", + "items" : { + "type" : "number" + } + }, { + "type" : "array", + "items" : { + "type" : "string" + } + } ] + }, "metabase-enterprise.metabot-v3.tools.api.field-values-arguments" : { "allOf" : [ { "type" : "object", @@ -388,6 +625,38 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.field-values-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "field_id" : { + "type" : "string" + }, + "statistics" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.statistics" + }, + "values" : { + "type" : "array", + "items" : { } + } + }, + "required" : [ "field_id" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.filter" : { "anyOf" : [ { "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.existence-filter" @@ -467,6 +736,86 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.filtering-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Query" + }, + "query_id" : { + "type" : "string" + }, + "result_columns" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "type" : { + "const" : "query" + } + }, + "required" : [ "type", "query_id", "query", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.find-metric-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "queryable_dimensions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name", "queryable_dimensions" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.find-outliers-arguments" : { "allOf" : [ { "type" : "object", @@ -536,24 +885,115 @@ "properties" : { } } ] }, - "metabase-enterprise.metabot-v3.tools.api.generate-insights-arguments" : { - "type" : "object", - "properties" : { - "for" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "metric_id" : { - "type" : "integer" - } - }, - "required" : [ "metric_id" ] - }, { - "type" : "object", - "properties" : { - "table_id" : { - "type" : "string" - } + "metabase-enterprise.metabot-v3.tools.api.find-outliers-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "dimension" : { }, + "value" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "number" + } ] + } + }, + "required" : [ "dimension", "value" ] + } + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.full-metric" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "queryable_dimensions" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.full-table" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "fields" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "id" : { + "type" : "integer" + }, + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-metric" + } + }, + "name" : { + "type" : "string" + }, + "queryable_foreign_key_tables" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-table" + } + }, + "type" : { + "type" : "string", + "enum" : [ "model", "table" ] + } + }, + "required" : [ "id", "type", "name", "fields" ] + }, + "metabase-enterprise.metabot-v3.tools.api.generate-insights-arguments" : { + "type" : "object", + "properties" : { + "for" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "metric_id" : { + "type" : "integer" + } + }, + "required" : [ "metric_id" ] + }, { + "type" : "object", + "properties" : { + "table_id" : { + "type" : "string" + } }, "required" : [ "table_id" ] }, { @@ -578,6 +1018,74 @@ }, "required" : [ "for" ] }, + "metabase-enterprise.metabot-v3.tools.api.get-current-user-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "email_address" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "user" + } + }, + "required" : [ "id", "type", "name", "email_address" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.get-dashboard-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "dashboard" + } + }, + "required" : [ "id", "type", "name" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-metric-details-arguments" : { "allOf" : [ { "type" : "object", @@ -604,6 +1112,60 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-metric-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-metric" + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.get-query-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "query" : { + "type" : "object", + "properties" : { } + }, + "query_id" : { + "type" : "string" + }, + "result_columns" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "query" + } + }, + "required" : [ "type", "query_id", "query", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-report-details-arguments" : { "allOf" : [ { "type" : "object", @@ -626,6 +1188,43 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-report-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "result_columns" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "question" + } + }, + "required" : [ "id", "type", "name", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-table-details-arguments" : { "allOf" : [ { "type" : "object", @@ -662,6 +1261,25 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-table-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-table" + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.group-by" : { "allOf" : [ { "type" : "object", @@ -705,6 +1323,9 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.proportion" : { + "type" : "number" + }, "metabase-enterprise.metabot-v3.tools.api.query-metric-arguments" : { "allOf" : [ { "type" : "object", @@ -788,6 +1409,59 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.statistics" : { + "type" : "object", + "properties" : { + "values" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-values" + }, + "min" : { + "type" : "number" + }, + "percent_url" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "average_length" : { + "type" : "number" + }, + "earliest" : { + "type" : "string" + }, + "q1" : { + "type" : "number" + }, + "max" : { + "type" : "number" + }, + "distinct_count" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.count" + }, + "percent_state" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "percent_null" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "avg" : { + "type" : "number" + }, + "sd" : { + "type" : "number" + }, + "percent_email" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "latest" : { + "type" : "string" + }, + "q3" : { + "type" : "number" + }, + "percent_json" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + } + } + }, "metabase-enterprise.metabot-v3.tools.api.string-filter" : { "allOf" : [ { "type" : "object", @@ -926,154 +1600,15 @@ }, "required" : [ "conversation_id" ] }, - "metabase.analyze.fingerprint.schema.Fingerprint" : { - "type" : "object", - "properties" : { - "experimental" : { - "type" : "object", - "properties" : { } - }, - "global" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.GlobalFingerprint" - }, - "type" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" - } - } - }, - "metabase.analyze.fingerprint.schema.GlobalFingerprint" : { - "type" : "object", - "properties" : { - "distinct-count" : { - "type" : "integer" - }, - "nil%" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - } - } - }, - "metabase.analyze.fingerprint.schema.NumberFingerprint" : { - "type" : "object", - "properties" : { - "avg" : { - "type" : "number" - }, - "max" : { - "type" : "number" - }, - "min" : { - "type" : "number" - }, - "q1" : { - "type" : "number" - }, - "q3" : { - "type" : "number" - }, - "sd" : { - "type" : "number" - } - } - }, - "metabase.analyze.fingerprint.schema.Percent" : { - "type" : "number" - }, - "metabase.analyze.fingerprint.schema.TemporalFingerprint" : { - "type" : "object", - "properties" : { - "earliest" : { - "type" : "string" - }, - "latest" : { - "type" : "string" - } - } - }, - "metabase.analyze.fingerprint.schema.TextFingerprint" : { - "type" : "object", - "properties" : { - "average-length" : { - "type" : "number" - }, - "percent-email" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-json" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-state" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-url" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - } - } - }, - "metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" : { - "type" : "object", - "properties" : { - "type/DateTime" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TemporalFingerprint" - }, - "type/Number" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.NumberFingerprint" - }, - "type/Text" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TextFingerprint" - } - } - }, - "metabase.analyze.query-results.MaybeUnnormalizedReference" : { }, - "metabase.analyze.query-results.ResultColumnMetadata" : { - "type" : "object", - "properties" : { - "field_ref" : { - "$ref" : "#/components/schemas/metabase.analyze.query-results.MaybeUnnormalizedReference" - }, - "fingerprint" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Fingerprint" - }, - "base_type" : { - "description" : "value must be a valid field data type (keyword or string)." - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, - "name" : { - "type" : "string" - }, - "semantic_type" : { - "description" : "value must be a valid field semantic or relation type (keyword or string)." - }, - "display_name" : { - "type" : "string" - }, - "converted_timezone" : { - "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" - }, - "unit" : { - "description" : "value must be a keyword or string.", - "anyOf" : [ { - "type" : "string" - }, { - "type" : "string" - } ] - }, - "description" : { - "type" : "string" - } - }, - "required" : [ "name", "display_name", "base_type" ] - }, - "metabase.analyze.query-results.ResultsMetadata" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.analyze.query-results.ResultColumnMetadata" - }, - "description" : "value must be an array of valid results column metadata maps.", - "optional" : true - }, - "metabase.cache.api..cache-strategy.base" : { + "metabase.analyze.query-results.ResultsMetadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "value must be an array of valid results column metadata maps.", + "optional" : true + }, + "metabase.cache.api..cache-strategy.base" : { "type" : "object", "properties" : { "type" : { @@ -1258,65 +1793,2653 @@ "required" : [ "type", "subject", "body" ] } ] }, - "metabase.lib.schema.common.non-blank-string" : { - "type" : "string", - "minLength" : 1 + "metabase.collections.api.DashboardQuestionCandidate" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string" + }, + "sole_dashboard_info" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string" + } + }, + "required" : [ "id", "name" ] + } + }, + "required" : [ "id", "name", "sole_dashboard_info" ] }, - "metabase.lib.schema.expression.temporal.timezone-id" : { - "allOf" : [ { - "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + "metabase.collections.api.DashboardQuestionCandidatesResponse" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidate" + } + }, + "total" : { + "type" : "integer" + } + }, + "required" : [ "data", "total" ] + }, + "metabase.collections.api.MoveDashboardQuestionCandidatesResponse" : { + "type" : "object", + "properties" : { + "moved" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + } + }, + "required" : [ "moved" ] + }, + "metabase.legacy-mbql.schema.!=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.*" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.+" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.-" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema./" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.<" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.<=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.>" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.>=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.Addable" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeExpressionArg" }, { - "anyOf" : [ { - "type" : "string", - "enum" : [ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Asmera", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Timbuktu", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Atka", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Buenos_Aires", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Catamarca", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Ensenada", "America/Fort_Nelson", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Jujuy", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Knox_IN", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Louisville", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Mendoza", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Acre", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Rosario", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Shiprock", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Virgin", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/South_Pole", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Calcutta", "Asia/Chita", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Colombo", "Asia/Dacca", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Harbin", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Katmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macao", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Saigon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Tel_Aviv", "Asia/Thimbu", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Jan_Mayen", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/ACT", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Canberra", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/LHI", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/NSW", "Australia/North", "Australia/Perth", "Australia/Queensland", "Australia/South", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Australia/West", "Australia/Yancowinna", "Brazil/Acre", "Brazil/DeNoronha", "Brazil/East", "Brazil/West", "CET", "CST6CDT", "Canada/Atlantic", "Canada/Central", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Canada/Saskatchewan", "Canada/Yukon", "Chile/Continental", "Chile/EasterIsland", "Cuba", "EET", "EST5EDT", "Egypt", "Eire", "Etc/GMT", "Etc/GMT+0", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/UTC", "Etc/Universal", "Etc/Zulu", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belfast", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Tiraspol", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "GB", "GB-Eire", "GMT", "GMT0", "Greenwich", "Hongkong", "Iceland", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Iran", "Israel", "Jamaica", "Japan", "Kwajalein", "Libya", "MET", "MST7MDT", "Mexico/BajaNorte", "Mexico/BajaSur", "Mexico/General", "NZ", "NZ-CHAT", "Navajo", "PRC", "PST8PDT", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kanton", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Samoa", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "Pacific/Yap", "Poland", "Portugal", "ROK", "Singapore", "SystemV/AST4", "SystemV/AST4ADT", "SystemV/CST6", "SystemV/CST6CDT", "SystemV/EST5", "SystemV/EST5EDT", "SystemV/HST10", "SystemV/MST7", "SystemV/MST7MDT", "SystemV/PST8", "SystemV/PST8PDT", "SystemV/YST9", "SystemV/YST9YDT", "Turkey", "UCT", "US/Alaska", "US/Aleutian", "US/Arizona", "US/Central", "US/East-Indiana", "US/Eastern", "US/Hawaii", "US/Indiana-Starke", "US/Michigan", "US/Mountain", "US/Pacific", "US/Samoa", "UTC", "Universal", "W-SU", "WET", "Zulu" ] - }, { - "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" - } ] + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpressionArg" } ] }, - "metabase.lib.schema.id.card" : { - "type" : "integer", - "minimum" : 1 + "metabase.legacy-mbql.schema.Aggregation" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation-options" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.UnnamedAggregation" + } ] }, - "metabase.lib.schema.id.field" : { - "type" : "integer", - "minimum" : 1 + "metabase.legacy-mbql.schema.BooleanExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.and" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.or" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.!=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.<" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.>" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.<=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.>=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.between" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.starts-with" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ends-with" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.contains" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.in" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-in" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.does-not-contain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.inside" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.is-empty" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-empty" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.is-null" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-null" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-time-interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.time-interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.during" + } ] }, - "metabase.lib.schema.literal..string.datetime" : { + "metabase.legacy-mbql.schema.Constraints" : { + "description" : "Additional constraints added to a query limiting the maximum number of rows that can be returned. Mostly useful\n because native queries don't support the MBQL `:limit` clause. For MBQL queries, if `:limit` is set, it will\n override these values.", + "type" : "object", + "properties" : { + "max-results" : { + "description" : "Maximum number of results to allow for a query with aggregations. If `max-results-bare-rows` is unset, this\n applies to all queries", + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + }, + "max-results-bare-rows" : { + "description" : "Maximum number of results to allow for a query with no aggregations. If set, this should be LOWER than\n `:max-results`.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + } + } + }, + "metabase.legacy-mbql.schema.DatabaseID" : { + "description" : "Schema for a valid `:database` ID, in the top-level 'outer' query. Either a positive integer (referring to an\n actual Database), or the saved questions virtual ID, which is a placeholder used for queries using the\n `:source-table \"card__id\"` shorthand for a source query resolved by middleware (since clients might not know the\n actual DB for that source query.)", "anyOf" : [ { - "type" : "string", - "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + "$ref" : "#/components/schemas/metabase.lib.schema.id.saved-questions-virtual-database" }, { - "type" : "string", - "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" } ] }, - "metabase.lib.schema.literal..string.zone-offset" : { - "type" : "string", - "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" + "metabase.legacy-mbql.schema.DateOrDatetimeLiteral" : { + "description" : "Schema for a valid date or datetime literal.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.absolute-datetime" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.datetime" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.date" + } ] }, - "metabase.lib.schema.metadata..column.has-field-values" : { + "metabase.legacy-mbql.schema.DateTimeExpressionArg" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateOrDatetimeLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + } ] + }, + "metabase.legacy-mbql.schema.DateTimeUnit" : { + "description" : "Valid unit for *datetime* bucketing.", "type" : "string", - "enum" : [ "auto-list", "list", "none", "search" ] + "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] }, - "metabase.lib.schema.temporal-bucketing.unit" : { + "metabase.legacy-mbql.schema.DateUnit" : { + "description" : "Valid unit for date bucketing.", "type" : "string", - "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "second-of-minute", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] + "enum" : [ "quarter", "day", "week", "default", "day-of-week", "month", "month-of-year", "day-of-month", "year", "day-of-year", "year-of-era", "week-of-year", "quarter-of-year" ] }, - "metabase.logger.api.time-unit" : { + "metabase.legacy-mbql.schema.DatetimeDiffUnit" : { + "description" : "Valid units for a datetime-diff clause.", "type" : "string", - "enum" : [ "days", "hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds" ] + "enum" : [ "second", "minute", "hour", "day", "week", "month", "quarter", "year" ] }, - "metabase.notification.models.FullyHydratedNotification" : { - "description" : "Fully hydrated notification.", + "metabase.legacy-mbql.schema.DatetimeExpression" : { "oneOf" : [ { - "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.+" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-add" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-subtract" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.convert-timezone" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.now" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.date" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.today" + } ] + }, + "metabase.legacy-mbql.schema.EqualityComparable" : { + "anyOf" : [ { + "type" : "boolean" + }, { + "type" : "number" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemporalLiteral" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ExpressionArg" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + } ], + "optional" : true + }, + "metabase.legacy-mbql.schema.ExpressionArg" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "boolean" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.ExtractWeekMode" : { + "description" : "Valid modes to extract weeks.", + "type" : "string", + "enum" : [ "iso", "us", "instance" ] + }, + "metabase.legacy-mbql.schema.FieldOptions" : { + "allOf" : [ { + "type" : "object", + "properties" : { + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning", + "description" : "Replaces `binning-strategy`.\n\n Using binning requires the driver to support the `:binning` feature." + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit" + }, + "join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias", + "description" : "Replaces `joined-field`.\n\n `:join-alias` is used to refer to a FieldOrExpression from a different Table/nested query that you are EXPLICITLY\n JOINING against." + }, + "source-field" : { + "description" : "Replaces `fk->`.\n\n `:source-field` is used to refer to a FieldOrExpression from a different Table you would like IMPLICITLY JOINED to\n the source table.\n\n If both `:source-field` and `:join-alias` are supplied, `:join-alias` should be used to perform the join;\n `:source-field` should be for information purposes only.", + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "source-field-join-alias" : { + "description" : "The join alias of the source field used for an implicit join.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source-field-name" : { + "description" : "The name or desired alias of the field used for an implicit join.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "temporal-unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit", + "description" : "`:temporal-unit` is used to specify DATE BUCKETING for a FieldOrExpression that represents a moment in time of\n some sort.\n\n There is no requirement that all `:type/Temporal` derived FieldOrExpressions specify a `:temporal-unit`, but for\n legacy reasons `:field` clauses that refer to `:type/DateTime` FieldOrExpressions will be automatically \"bucketed\"\n in the `:breakout` and `:filter` clauses, but nowhere else. Auto-bucketing only applies to `:filter` clauses when\n values for comparison are `yyyy-MM-dd` date strings. See the `auto-bucket-datetimes` middleware for more details.\n `:field` clauses elsewhere will not be automatically bucketed, so drivers still need to make sure they do any\n special datetime handling for plain `:field` clauses when their FieldOrExpression derives from `:type/DateTime`." + } + } + }, { + "description" : "If `:base-type` is specified, the `:temporal-unit` must make sense, e.g. no bucketing by `:year`for\n a `:type/Time` column.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.validate-temporal-unit" + }, { + "description" : "You cannot use `:binning` keys like `:strategy` in the top level.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.no-binning-options-at-top-level" + } ] + }, + "metabase.legacy-mbql.schema.FieldOrExpressionDef" : { + "description" : "Schema for anything that is accepted as a top-level expression definition, either an arithmetic expression such as a\n `:+` clause or a `:field` or `:value` clause.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.offset" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.Fields" : { + "allOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, + "minItems" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.helpers.distinct" + } ] + }, + "metabase.legacy-mbql.schema.Filter" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.segment" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.Ident" : { + "description" : "Unique identifier string for new `:column` refs. The new refs aren't used in legacy MBQL (currently) but the\n idents for column-introducing new clauses (joins, aggregations, breakouts, expressions) are randomly generated when\n the clauses are created, so the idents must be preserved in legacy MBQL.\n\n These are opaque strings under the initial design; I've made them a separate schema for documentation and\n future-proofing.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, { + "type" : "string" + } ] + }, + "metabase.legacy-mbql.schema.IntGreaterThanZeroOrNumericExpression" : { + "oneOf" : [ { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + } ] + }, + "metabase.legacy-mbql.schema.Join" : { + "description" : "Perform the equivalent of a SQL `JOIN` with another Table or nested `:source-query`. JOINs are either explicitly\n specified in the incoming query, or implicitly generated when one uses a `:field` clause with `:source-field`.\n\n In the top-level query, you can reference Fields from the joined table or nested query by including `:source-field`\n in the `:field` options (known as implicit joins); for explicit joins, you *must* specify `:join-alias` yourself; in\n the `:field` options, e.g.\n\n ;; for joins against other Tables/MBQL source queries\n [:field 1 {:join-alias \"my_join_alias\"}]\n\n ;; for joins against native queries\n [:field \"my_field\" {:base-type :field/Integer, :join-alias \"my_join_alias\"}]", + "type" : "object", + "properties" : { + "ident" : { + "description" : "An opaque string used as a unique identifier for this join clause, even if it evolves. This string is randomly\n generated when a join clause is created, so it can never be confused with another join of the same table.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Ident" + }, + "strategy" : { + "description" : "Defaults to `:left-join`; used for all automatically-generated JOINs\n\n Driver implementations: this is guaranteed to be present after pre-processing.", + "type" : "string", + "enum" : [ "full-join", "right-join", "left-join", "inner-join" ] + }, + "source-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "Metadata about the source query being used, if pulled in from a Card via the\n `:source-table \"card__id\"` syntax. added automatically by the `resolve-card-id-source-tables` middleware." + }, + "condition" : { + "description" : "The condition on which to JOIN. Can be anything that is a valid `:filter` clause. For automatically-generated\n JOINs this is usually something like\n\n [:= [:field {:join-alias }]]", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Filter" + }, + "source-query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.SourceQuery" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field", + "description" : "Mostly used only internally. When a join is implicitly generated via a `:field` clause with\n `:source-field`, the ID of the foreign key field in the source Table will be recorded here. This information is used\n to add `fk_field_id` information to the `:cols` in the query results, and also for drill-thru. When generating\n explicit joins by hand you can usually omit this information, altho it doesn't hurt to include it if you know it.\n\n Don't set this information yourself. It will have no effect." + }, + "fields" : { + "description" : "The Fields from this join to include in parent-level results. This can be either `:none`, `:all`, or a sequence\n of `:field` clauses.\n\n * `:none`: no Fields from the joined table or nested query are included (unless indirectly included by breakouts or\n other clauses). This is the default, and what is used for automatically-generated joins.\n\n * `:all`: will include all of the Field from the joined table or query\n\n * a sequence of Field clauses: include only the Fields specified. Valid clauses are the same as the top-level\n `:fields` clause. This should be non-empty and all elements should be distinct. The normalizer will automatically\n remove duplicate fields for you, and replace empty clauses with `:none`.\n\n Driver implementations: you can ignore this clause. Relevant fields will be added to top-level `:fields` clause with\n appropriate aliases.", + "anyOf" : [ { + "type" : "string", + "enum" : [ "all", "none" ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Fields" + } ] + }, + "source-table" : { + "description" : "*What* to JOIN. Self-joins can be done by using the same `:source-table` as in the query where\n this is specified. YOU MUST SUPPLY EITHER `:source-table` OR `:source-query`, BUT NOT BOTH!", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, { + "description" : "`card__` string Table ID", + "type" : "string", + "pattern" : "^card__[1-9]\\d*$" + } ] + }, + "alias" : { + "description" : "The name used to alias the joined table or query. This is usually generated automatically and generally looks\n like `table__via__field`. You can specify this yourself if you need to reference a joined field with a `:join-alias`\n in the options.\n\n Driver implementations: This is guaranteed to be present after pre-processing.", + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + } + }, + "required" : [ "condition" ] + }, + "metabase.legacy-mbql.schema.Joins" : { + "description" : "Schema for a valid sequence of `Join`s. Must be a non-empty sequence, and `:alias`, if specified, must be unique.", + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Join" + }, + "minItems" : 1 + }, + "metabase.legacy-mbql.schema.MBQLQuery" : { + "type" : "object", + "properties" : { + "breakout" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, + "minItems" : 1 + }, + "source-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "Info about the columns of the source query. Added in automatically by middleware. This metadata is\n primarily used to let power things like binning when used with Field Literals instead of normal Fields." + }, + "source-query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.SourceQuery" + }, + "limit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + }, + "filter" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Filter" + }, + "joins" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Joins" + }, + "aggregation" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, + "minItems" : 1 + }, + "fields" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Fields" + }, + "source-table" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, { + "description" : "`card__` string Table ID", + "type" : "string", + "pattern" : "^card__[1-9]\\d*$" + } ] + }, + "order-by" : { + "allOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.OrderBy" + }, + "minItems" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.helpers.distinct" + } ] + }, + "page" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Page" + }, + "expressions" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.FieldOrExpressionDef" + } + } + } + }, + "metabase.legacy-mbql.schema.MiddlewareOptions" : { + "description" : "Additional options that can be used to toggle middleware on or off.", + "type" : "object", + "properties" : { + "add-default-userland-constraints?" : { + "type" : "boolean", + "description" : "Whether to add some default `max-results` and `max-results-bare-rows` constraints. By default, none are added,\n although the functions that ultimately power most API endpoints tend to set this to `true`. See\n `add-constraints` middleware for more details." + }, + "disable-max-results?" : { + "description" : "Disable applying a default limit on the query results. Handled in the `add-default-limit` middleware. If true,\n this will override the `:max-results` and `:max-results-bare-rows` values in `Constraints`.", + "type" : "boolean" + }, + "disable-mbql->native?" : { + "description" : "Disable the MBQL->native middleware. If you do this, the query will not work at all, so there are no cases where\n you should set this yourself. This is only used by the `metabase.query-processor.preprocess/preprocess` function to\n get the fully pre-processed query without attempting to convert it to native.", + "type" : "boolean" + }, + "format-rows?" : { + "description" : "Should we skip converting datetime types to ISO-8601 strings with appropriate timezone when post-processing\n results? Used by `metabase.query-processor.middleware.format-rows`default `false`.", + "type" : "boolean" + }, + "process-viz-settings?" : { + "type" : "boolean", + "description" : "Whether to process a question's visualization settings and include them in the result metadata so that they can\n incorporated into an export. Used by `metabase.query-processor.middleware.visualization-settings`; default\n `false`." + }, + "skip-results-metadata?" : { + "description" : "Should we skip adding `results_metadata` to query results after running the query? Used by\n `metabase.query-processor.middleware.results-metadata`; default `false`. (Note: we may change the name of this\n column in the near future, to `result_metadata`, to fix inconsistencies in how we name things.)", + "type" : "boolean" + }, + "userland-query?" : { + "type" : "boolean", + "description" : "Userland queries are ones ran as a result of an API call, Pulse, or the like. Special handling is done in\n certain userland-only middleware for such queries -- results are returned in a slightly different format, and\n QueryExecution entries are normally saved, unless you pass `:no-save` as the option." + } + } + }, + "metabase.legacy-mbql.schema.NativeSourceQuery" : { + "type" : "object", + "properties" : { + "collection" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "native" : { }, + "template-tags" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTagMap" + } + }, + "required" : [ "native" ] + }, + "metabase.legacy-mbql.schema.NumericExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.+" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.-" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.~1" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.*" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.coalesce" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.length" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.floor" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ceil" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.round" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.abs" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.power" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sqrt" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.exp" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.log" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-diff" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.integer" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.float" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.temporal-extract" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-year" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-quarter" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-month" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-week" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-day" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-day-of-week" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-hour" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-minute" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-second" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + } ] + }, + "metabase.legacy-mbql.schema.NumericExpressionArg" : { + "oneOf" : [ { + "type" : "number" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + } ] + }, + "metabase.legacy-mbql.schema.OrderBy" : { + "description" : "Schema for an `order-by` clause subclause.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.asc" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.desc" + } ] + }, + "metabase.legacy-mbql.schema.OrderComparable" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "anyOf" : [ { + "type" : "number" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemporalLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ExpressionArg" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + } ] + } ] + }, + "metabase.legacy-mbql.schema.Page" : { + "description" : "`page` = page num, starting with 1. `items` = number of items per page.\n e.g.\n\n {:page 1, :items 10} = items 1-10\n {:page 2, :items 10} = items 11-20", + "type" : "object", + "properties" : { + "items" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "page" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "page", "items" ] + }, + "metabase.legacy-mbql.schema.Parameter" : { + "description" : "Schema for the *value* of a parameter (e.g. a Dashboard parameter or a native query template tag) as passed in as\n part of the `:parameters` list in a query.", + "type" : "object", + "properties" : { + "default" : { }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { }, + "slug" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "target" : { + "oneOf" : [ { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + } ] + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.type" + }, + "value" : { } + }, + "required" : [ "type" ] + }, + "metabase.legacy-mbql.schema.ParameterList" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Parameter" + }, + "optional" : true + }, + "metabase.legacy-mbql.schema.Query" : { + "allOf" : [ { + "type" : "object", + "properties" : { + "update-row" : { + "$ref" : "#/components/schemas/metabase.lib.schema.actions.row" + }, + "settings" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Settings" + }, + "constraints" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Constraints" + }, + "query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MBQLQuery" + }, + "native" : { + "type" : "object", + "properties" : { + "collection" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "query" : { }, + "template-tags" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTagMap" + } + }, + "required" : [ "query" ] + }, + "info" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.info", + "description" : "Used when recording info about this run in the QueryExecution log; things like context query was\n ran in and User who ran it." + }, + "middleware" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MiddlewareOptions" + }, + "database" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatabaseID" + }, + "type" : { + "description" : "Type of query. `:query` = MBQL; `:native` = native.", + "type" : "string", + "enum" : [ "query", "native" ] + }, + "parameters" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ParameterList" + }, + "create-row" : { + "$ref" : "#/components/schemas/metabase.lib.schema.actions.row" + } + }, + "required" : [ "type" ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.check-keys-for-query-type" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.check-query-does-not-have-source-metadata" + } ] + }, + "metabase.legacy-mbql.schema.Reference" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + } ] + }, + "metabase.legacy-mbql.schema.RelativeDatetimeUnit" : { + "type" : "string", + "enum" : [ "default", "minute", "hour", "day", "week", "month", "quarter", "year" ] + }, + "metabase.legacy-mbql.schema.Settings" : { + "description" : "Options that tweak the behavior of the query processor.", + "type" : "object", + "properties" : { + "report-timezone" : { + "description" : "The timezone the query should be ran in, overriding the default report timezone for the instance.", + "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" + } + } + }, + "metabase.legacy-mbql.schema.SourceQuery" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NativeSourceQuery" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MBQLQuery" + } ] + }, + "metabase.legacy-mbql.schema.StringExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.substring" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.trim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ltrim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.rtrim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.replace" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.lower" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.upper" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.concat" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.regex-match-first" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.coalesce" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.host" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.domain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.subdomain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.path" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.month-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.quarter-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.day-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.text" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.split-part" + } ] + }, + "metabase.legacy-mbql.schema.StringExpressionArg" : { + "oneOf" : [ { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.TemplateTag" : { + "description" : "Schema for a template tag as specified in a native query. There are four types of template tags, differentiated by\n `:type`.\n\n Template tags are used to specify {{placeholders}} in native queries that are replaced with some sort of value when\n the query itself runs. There are four basic types of template tag for native queries:\n\n 1. Field filters, which are used like\n\n SELECT * FROM table WHERE {{field_filter}}\n\n These reference specific Fields and are replaced with entire conditions, e.g. `some_field > 1000`\n\n 2. Raw values, which are used like\n\n SELECT * FROM table WHERE my_field = {{x}}\n\n These are replaced with raw values.\n\n 3. Native query snippets, which might be used like\n\n SELECT * FROM ({{snippet: orders}}) source\n\n These are replaced with `NativeQuerySnippet`s from the application database.\n\n 4. Source query Card IDs, which are used like\n\n SELECT * FROM ({{#123}}) source\n\n These are replaced with the query from the Card with that ID.\n\n Field filters and raw values usually have their value specified by `:parameters`.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:FieldFilter" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:Snippet" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:SourceQuery" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:TemporalUnit" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:RawValue" + } ] + }, + "metabase.legacy-mbql.schema.TemplateTag:FieldFilter" : { + "description" : "Schema for a field filter template tag.", + "type" : "object", + "properties" : { + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "const" : "dimension" + }, + "alias" : { + "type" : "string" + }, + "options" : { + "type" : "object", + "additionalProperties" : { }, + "description" : "optional map to be appended to filter clause" + }, + "dimension" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "default" : { }, + "widget-type" : { + "description" : "which type of widget the frontend should show for this Field Filter; this also affects which parameter types\n are allowed to be specified for it.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.WidgetType" + } + }, + "required" : [ "type", "name", "display-name", "dimension", "widget-type" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:RawValue" : { + "description" : "Schema for a raw value template tag.", + "type" : "object", + "properties" : { + "default" : { }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "type" : "string", + "enum" : [ "date", "number", "boolean", "text" ] + } + }, + "required" : [ "type", "name", "display-name" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:Snippet" : { + "description" : "Schema for a native query snippet template tag.", + "type" : "object", + "properties" : { + "database" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "snippet-id" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "snippet-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "type" : { + "const" : "snippet" + } + }, + "required" : [ "type", "name", "display-name", "snippet-name", "snippet-id" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:SourceQuery" : { + "description" : "Schema for a source query template tag.", + "type" : "object", + "properties" : { + "card-id" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "type" : { + "const" : "card" + } + }, + "required" : [ "type", "name", "display-name", "card-id" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:TemporalUnit" : { + "description" : "Schema for a temporal unit template tag.", + "type" : "object", + "properties" : { + "alias" : { + "type" : "string" + }, + "default" : { }, + "dimension" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "const" : "temporal-unit" + } + }, + "required" : [ "type", "name", "display-name", "dimension" ] + }, + "metabase.legacy-mbql.schema.TemplateTagMap" : { + "description" : "Schema for the `:template-tags` map passed in as part of a native query.\n\n Map of template tag name -> template tag definition", + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag" + } + }, + "metabase.legacy-mbql.schema.TemporalExtractUnit" : { + "description" : "Valid units to extract from a temporal.", + "type" : "string", + "enum" : [ "year-of-era", "quarter-of-year", "month-of-year", "week-of-year-iso", "week-of-year-us", "week-of-year-instance", "day-of-month", "day-of-week", "day-of-week-iso", "hour-of-day", "minute-of-hour", "second-of-minute" ] + }, + "metabase.legacy-mbql.schema.TemporalLiteral" : { + "description" : "Schema for valid temporal literals.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateOrDatetimeLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TimeLiteral" + } ] + }, + "metabase.legacy-mbql.schema.TimeLiteral" : { + "description" : "Schema for valid time literals.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.time" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.time" + } ] + }, + "metabase.legacy-mbql.schema.TimeUnit" : { + "description" : "Valid unit for time bucketing.", + "type" : "string", + "enum" : [ "hour", "second", "default", "hour-of-day", "millisecond", "minute-of-hour", "minute" ] + }, + "metabase.legacy-mbql.schema.UnnamedAggregation" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.avg" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.cum-sum" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.distinct" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.distinct-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.stddev" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sum" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.min" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.max" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.metric" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.share" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.count-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sum-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.median" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.percentile" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ag:var" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.cum-count" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.count" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.offset" + } ] + } ] + }, + "metabase.legacy-mbql.schema.ValueTypeInfo" : { + "description" : "Type info about a value in a `:value` clause. Added automatically by `wrap-value-literals` middleware to values in filter clauses based on the Field in the clause.", + "type" : "object", + "properties" : { + "base_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "database_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "semantic_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit" + } + } + }, + "metabase.legacy-mbql.schema.WidgetType" : { + "description" : "Schema for valid values of `:widget-type` for a [[::TemplateTag:FieldFilter]].", + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.widget-type" + }, + "metabase.legacy-mbql.schema.abs" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.absolute-datetime" : { + "oneOf" : [ { }, { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.ag:var" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.aggregation" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.aggregation-options" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.and" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.asc" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.avg" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.between" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.case" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.case:if" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ceil" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.check-keys-for-query-type" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.check-query-does-not-have-source-metadata" : { + "description" : "`:source-metadata` is added to queries when `card__id` source queries are resolved. It contains info about the\n columns in the source query.\n\n Where this is added was changed in Metabase 0.33.0 -- previously, when `card__id` source queries were resolved, the\n middleware would add `:source-metadata` to the top-level; to support joins against source queries, this has been\n changed so it is always added at the same level the resolved `:source-query` is added.\n\n This should automatically be fixed by `normalize`; if we encounter it, it means some middleware is not functioning\n properly." + }, + "metabase.legacy-mbql.schema.coalesce" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.concat" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.contains" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.convert-timezone" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.count" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.count-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.cum-count" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.cum-sum" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.date" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-add" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-diff" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-subtract" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.day-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.desc" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.dimension" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.distinct" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.distinct-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.does-not-contain" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.domain" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.during" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ends-with" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.exp" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.expression" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.field" : { + "allOf" : [ { + "allOf" : [ ] + }, { + "description" : "Fields using names rather than integer IDs are required to specify `:base-type`.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.require-base-type-for-field-name" + } ] + }, + "metabase.legacy-mbql.schema.field-or-expression-ref" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + } ] + }, + "metabase.legacy-mbql.schema.float" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.floor" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-day" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-day-of-week" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-hour" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-minute" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-month" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-quarter" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-second" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-week" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-year" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.helpers.distinct" : { + "description" : "values must be distinct" + }, + "metabase.legacy-mbql.schema.host" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.in" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.inside" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.integer" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.is-empty" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.is-null" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.legacy-column-metadata" : { + "description" : "Schema for a single legacy metadata column. This is the pre-Lib equivalent of\n `:metabase.lib.schema.metadata/column`.", + "type" : "object", + "properties" : { + "field_ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "visibility_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "base_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "display_name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "converted_timezone" : { + "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "effective_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + } + }, + "required" : [ "base_type", "display_name", "name" ] + }, + "metabase.legacy-mbql.schema.length" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.log" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.lower" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ltrim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.max" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.median" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.metric" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.min" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.month-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.no-binning-options-at-top-level" : { }, + "metabase.legacy-mbql.schema.not" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-empty" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-in" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-null" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.now" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.offset" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.or" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.path" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.percentile" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.power" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.quarter-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.regex-match-first" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.relative-datetime" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.relative-time-interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.replace" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.require-base-type-for-field-name" : { }, + "metabase.legacy-mbql.schema.round" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.rtrim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.segment" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.share" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.split-part" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sqrt" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.starts-with" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.stddev" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.subdomain" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.substring" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sum" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sum-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.template-tag" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.temporal-extract" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.text" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.time" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.time-interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.today" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.trim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.upper" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.validate-temporal-unit" : { }, + "metabase.legacy-mbql.schema.value" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.variable" : { + "allOf" : [ ] + }, + "metabase.lib.schema.actions.row" : { + "type" : "object", + "additionalProperties" : { } + }, + "metabase.lib.schema.binning.bin-width" : { + "description" : "Bin width (size of each bin).", + "$ref" : "#/components/schemas/metabase.lib.schema.common.positive-number" + }, + "metabase.lib.schema.binning.binning" : { + "description" : "Schema for `:binning` options passed to a `:field` clause.", + "allOf" : [ { + "type" : "object", + "properties" : { + "strategy" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.strategy" + } + }, + "required" : [ "strategy" ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "strategy" : { + "const" : "default" + } + }, + "required" : [ "strategy" ] + }, { + "type" : "object", + "properties" : { + "bin-width" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.bin-width" + }, + "strategy" : { + "const" : "bin-width" + } + }, + "required" : [ "strategy", "bin-width" ] + }, { + "type" : "object", + "properties" : { + "num-bins" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.num-bins" + }, + "strategy" : { + "const" : "num-bins" + } + }, + "required" : [ "strategy", "num-bins" ] + } ] + } ] + }, + "metabase.lib.schema.binning.num-bins" : { + "description" : "Number of bins to use.", + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.binning.strategy" : { + "type" : "string", + "enum" : [ "bin-width", "default", "num-bins" ] + }, + "metabase.lib.schema.common.base-type" : { + "type" : "string" + }, + "metabase.lib.schema.common.int-greater-than-or-equal-to-zero" : { + "description" : "Schema representing an integer than must also be greater than or equal to zero.", + "type" : "integer", + "minimum" : 0 + }, + "metabase.lib.schema.common.non-blank-string" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.common.options" : { + "default" : { }, + "type" : "object", + "properties" : { + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "database-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/uuid" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.uuid" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + } + }, + "required" : [ "lib/uuid" ] + }, + "metabase.lib.schema.common.positive-number" : { }, + "metabase.lib.schema.common.semantic-or-relation-type" : { + "description" : "valid semantic or relation type", + "type" : "string" + }, + "metabase.lib.schema.common.uuid" : { + "type" : "string", + "minLength" : 36, + "maxLength" : 36 + }, + "metabase.lib.schema.expression.temporal.timezone-id" : { + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, { + "anyOf" : [ { + "type" : "string", + "enum" : [ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Asmera", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Timbuktu", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Atka", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Buenos_Aires", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Catamarca", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Ensenada", "America/Fort_Nelson", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Jujuy", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Knox_IN", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Louisville", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Mendoza", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Acre", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Rosario", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Shiprock", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Virgin", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/South_Pole", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Calcutta", "Asia/Chita", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Colombo", "Asia/Dacca", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Harbin", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Katmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macao", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Saigon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Tel_Aviv", "Asia/Thimbu", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Jan_Mayen", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/ACT", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Canberra", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/LHI", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/NSW", "Australia/North", "Australia/Perth", "Australia/Queensland", "Australia/South", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Australia/West", "Australia/Yancowinna", "Brazil/Acre", "Brazil/DeNoronha", "Brazil/East", "Brazil/West", "CET", "CST6CDT", "Canada/Atlantic", "Canada/Central", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Canada/Saskatchewan", "Canada/Yukon", "Chile/Continental", "Chile/EasterIsland", "Cuba", "EET", "EST5EDT", "Egypt", "Eire", "Etc/GMT", "Etc/GMT+0", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/UTC", "Etc/Universal", "Etc/Zulu", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belfast", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Tiraspol", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "GB", "GB-Eire", "GMT", "GMT0", "Greenwich", "Hongkong", "Iceland", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Iran", "Israel", "Jamaica", "Japan", "Kwajalein", "Libya", "MET", "MST7MDT", "Mexico/BajaNorte", "Mexico/BajaSur", "Mexico/General", "NZ", "NZ-CHAT", "Navajo", "PRC", "PST8PDT", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kanton", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Samoa", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "Pacific/Yap", "Poland", "Portugal", "ROK", "Singapore", "SystemV/AST4", "SystemV/AST4ADT", "SystemV/CST6", "SystemV/CST6CDT", "SystemV/EST5", "SystemV/EST5EDT", "SystemV/HST10", "SystemV/MST7", "SystemV/MST7MDT", "SystemV/PST8", "SystemV/PST8PDT", "SystemV/YST9", "SystemV/YST9YDT", "Turkey", "UCT", "US/Alaska", "US/Aleutian", "US/Arizona", "US/Central", "US/East-Indiana", "US/Eastern", "US/Hawaii", "US/Indiana-Starke", "US/Michigan", "US/Mountain", "US/Pacific", "US/Samoa", "UTC", "Universal", "W-SU", "WET", "Zulu" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" + } ] + } ] + }, + "metabase.lib.schema.expression.window..offset.n" : { + "type" : "integer" + }, + "metabase.lib.schema.id.action" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.card" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.dashboard" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.database" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.dimension" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.field" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.pulse" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.saved-questions-virtual-database" : { + "description" : "The ID used to signify that a database is 'virtual' rather than physical.\n\n A fake integer ID is used so as to minimize the number of changes that need to be made on the frontend -- by using\n something that would otherwise be a legal ID, *nothing* need change there, and the frontend can query against this\n 'database' none the wiser. (This integer ID is negative which means it will never conflict with a *real* database\n ID.)\n\n This ID acts as a sort of flag. The relevant places in the middleware can check whether the DB we're querying is\n this 'virtual' database and take the appropriate actions.", + "const" : -1337 + }, + "metabase.lib.schema.id.segment" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.table" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.user" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.info.context" : { + "type" : "string", + "enum" : [ "action", "ad-hoc", "cache-refresh", "collection", "map-tiles", "pulse", "dashboard-subscription", "dashboard", "question", "csv-download", "xlsx-download", "json-download", "public-dashboard", "public-question", "public-csv-download", "public-xlsx-download", "public-json-download", "embedded-dashboard", "embedded-question", "embedded-csv-download", "embedded-xlsx-download", "embedded-json-download", "table-grid" ] + }, + "metabase.lib.schema.info.hash" : { + "type" : "string", + "format" : "byte" + }, + "metabase.lib.schema.info.info" : { + "type" : "object", + "properties" : { + "query-hash" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.hash" + }, + "action-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.action" + }, + "pivot/original-query" : { + "type" : "object", + "additionalProperties" : { } + }, + "executed-by" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.user" + }, + "card-entity-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "pivot/result-metadata" : { + "oneOf" : [ { + "const" : "none" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.column" + } + } ] + }, + "context" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.context" + }, + "dashboard-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dashboard" + }, + "metadata/model-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.lib-or-legacy-column" + } + }, + "pulse-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.pulse" + }, + "card-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + } + }, + "metabase.lib.schema.join.alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "metabase.lib.schema.literal..string.date" : { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}$" + }, + "metabase.lib.schema.literal..string.datetime" : { + "anyOf" : [ { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + }, { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + } ] + }, + "metabase.lib.schema.literal..string.time" : { + "anyOf" : [ { + "type" : "string", + "pattern" : "^\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + }, { + "type" : "string", + "pattern" : "^\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + } ] + }, + "metabase.lib.schema.literal..string.zone-offset" : { + "type" : "string", + "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" + }, + "metabase.lib.schema.literal.date" : { + "anyOf" : [ { }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.date" + } ] + }, + "metabase.lib.schema.literal.datetime" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.datetime" + }, { }, { }, { } ] + }, + "metabase.lib.schema.literal.time" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.time" + }, { }, { } ] + }, + "metabase.lib.schema.metadata..column.has-field-values" : { + "type" : "string", + "enum" : [ "auto-list", "list", "none", "search" ] + }, + "metabase.lib.schema.metadata..column.legacy-source" : { + "description" : "Possible values for `column.source` -- this is added by [[metabase.lib.metadata.result-metadata]] for historical\n reasons (it is used in a few places in the FE). DO NOT use this in the backend for any purpose, use `:lib/source`\n instead.", + "type" : "string", + "enum" : [ "aggregation", "fields", "breakout", "native" ] + }, + "metabase.lib.schema.metadata..column.remapping.external" : { + "description" : "External remapping (Dimension) for a column. From the [[metabase.warehouse-schema.models.dimension]] with `type =\n external` associated with a `Field` in the application database.\n See [[metabase.query-processor.middleware.add-dimension-projections]] for what this means.", + "type" : "object", + "properties" : { + "field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dimension" + }, + "lib/type" : { + "const" : "metadata.column.remapping/external" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + }, + "required" : [ "lib/type", "id", "name", "field-id" ] + }, + "metabase.lib.schema.metadata..column.remapping.internal" : { + "description" : "Internal remapping (FieldValues) for a column. From [[metabase.warehouse-schema.models.dimension]] with `type =\n internal` and the [[metabase.warehouse-schema.models.field-values]] associated with a `Field` in the application\n database. See [[metabase.query-processor.middleware.add-dimension-projections]] for what this means.", + "type" : "object", + "properties" : { + "human-readable-values" : { + "type" : "array", + "items" : { } + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dimension" + }, + "lib/type" : { + "const" : "metadata.column.remapping/internal" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "values" : { + "type" : "array", + "items" : { } + } + }, + "required" : [ "lib/type", "id", "name", "values", "human-readable-values" ] + }, + "metabase.lib.schema.metadata..column.source" : { + "description" : "`:lib/source` -- where a column came from with respect to the current stage.\n\n Traditionally, `:lib/source` meant something slightly different -- it denoted what part of the current stage a\n column came from, and thus included two additional options -- `:source/fields`, for columns used by `:fields`, and\n `:source/breakouts`, for columns used in `:breakout`. This was not really useful information and made `:lib/source`\n itself useless for determining if a column was 'inherited' or not (i.e., whether it came from a previous stage,\n source card, or a join, and should get field name refs instead of field ID refs --\n see [[metabase.lib.field.util/inherited-column?]]).", + "type" : "string", + "enum" : [ "source/card", "source/native", "source/previous-stage", "source/table-defaults", "source/aggregations", "source/joins", "source/expressions", "source/implicitly-joinable" ] + }, + "metabase.lib.schema.metadata..column.validate-expression-source" : { + "description" : "Only allow `:lib/expression-name` when `:lib/source` is `:source/expressions`. If it's anything else, it probably\n means it's getting incorrectly propagated from a previous stage (QUE-1342)." + }, + "metabase.lib.schema.metadata..column.validate-native-column" : { + "description" : "Certain keys cannot possibly be set when a column comes from directly from native query results, for example\n `:lib/breakout?` or join aliases" + }, + "metabase.lib.schema.metadata..column.validate-table-defaults-column" : { + "description" : "A column with :lib/source :source/table-defaults cannot possibly have a join alias." + }, + "metabase.lib.schema.metadata..column.visibility-type" : { + "type" : "string", + "enum" : [ "retired", "sensitive", "normal", "hidden", "details-only" ] + }, + "metabase.lib.schema.metadata.column" : { + "description" : "Malli schema for a valid map of column metadata, which can mean one of two things:\n\n 1. Metadata about a particular Field in the application database. This will always have an `:id`\n\n 2. Results metadata from a column in `data.cols` and/or `data.results_metadata.columns` in a Query Processor\n response, or saved in something like `Card.result_metadata`. These *may* have an `:id`, or may not -- columns\n coming back from native queries or things like `SELECT count(*)` aren't associated with any particular `Field`\n and thus will not have an `:id`.\n\n Now maybe these should be two different schemas, but `:id` being there or not is the only real difference; besides\n that they are largely compatible. So they're the same for now. We can revisit this in the future if we actually want\n to differentiate between the two versions.", + "allOf" : [ { + "type" : "object", + "properties" : { + "visibility-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "fk-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/external-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.external" + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "lib/source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.source-column-alias" + }, + "database-type" : { + "type" : "string" + }, + "lib/type" : { + "default" : "metadata/column", + "const" : "metadata/column" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "display-name" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/deduplicated-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.deduplicated-name" + }, + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/original-expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "fk-field-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "type" : "string" + }, + "lib/card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "lib/expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/breakout?" : { + "type" : "boolean" + }, + "metabase.lib.field/temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "metabase.lib.field/binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/model-display-name" : { + "type" : "string" + }, + "has-field-values" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.has-field-values" + }, + "lib/internal-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.internal" + }, + "selected?" : { + "type" : "boolean" + }, + "source-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "metabase.lib.join/join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "lib/original-binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/original-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "lib/original-display-name" : { + "type" : "string" + }, + "lib/source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.source" + }, + "active" : { + "type" : "boolean" + }, + "lib/ref-display-name" : { + "type" : "string" + }, + "lib/original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "lib/hack-original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "fk-target-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "lib/desired-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.desired-column-alias" + } + }, + "required" : [ "lib/type", "name", "base-type" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.kebab-cased-map" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-expression-source" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-native-column" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-table-defaults-column" + } ] + }, + "metabase.lib.schema.metadata.deduplicated-name" : { + "type" : "string", + "description" : "The simply-deduplicated name that was historically used in QP results metadata (originally calculated by\n the [[metabase.query-processor.middleware.annotate]] middleware, now calculated\n by [[metabase.lib.middleware.result-metadata]]). This just adds suffixes to column names e.g. `ID` and `ID` become\n `ID` and `ID_2`, respectively. Kept around because many old field refs use this column name.", + "optional" : true + }, + "metabase.lib.schema.metadata.desired-column-alias" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.global" : { + "description" : "Fingerprint values that Fields of all types should have.", + "type" : "object", + "properties" : { + "distinct-count" : { + "type" : "integer" + }, + "nil%" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.number" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Number`.", + "type" : "object", + "properties" : { + "avg" : { + "type" : "number" + }, + "max" : { + "type" : "number" + }, + "min" : { + "type" : "number" + }, + "q1" : { + "type" : "number" + }, + "q3" : { + "type" : "number" + }, + "sd" : { + "type" : "number" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.temporal" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Temporal`.", + "type" : "object", + "properties" : { + "earliest" : { + "type" : "string" + }, + "latest" : { + "type" : "string" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.text" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Text`.", + "type" : "object", + "properties" : { + "average-length" : { + "type" : "number" + }, + "percent-email" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-json" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-state" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-url" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.type-specific" : { + "description" : "Schema for type-specific fingerprint information.", + "allOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "properties" : { } + } + }, { + "type" : "object", + "properties" : { + "type/DateTime" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.temporal" + }, + "type/Number" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.number" + }, + "type/Text" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.text" + } + } + } ] + }, + "metabase.lib.schema.metadata.fingerprint.fingerprint" : { + "description" : "Schema for a Field 'fingerprint' generated as part of the analysis stage. Used to power the 'classification'\n sub-stage of analysis. Stored as the `fingerprint` column of Field.", + "type" : "object", + "properties" : { + "experimental" : { + "type" : "object", + "additionalProperties" : { } + }, + "global" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.global" + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.type-specific" + } + } + }, + "metabase.lib.schema.metadata.fingerprint.percent" : { + "description" : "Schema for something represting a percentage. A floating-point value between (inclusive) 0 and 1.", + "type" : "number" + }, + "metabase.lib.schema.metadata.kebab-cased-map" : { }, + "metabase.lib.schema.metadata.lib-or-legacy-column" : { + "description" : "Schema for the maps in card `:result-metadata` and similar. These can be either\n `:metabase.lib.schema.metadata/result-metadata` (i.e., kebab-cased) maps, or map snake_cased as returned by QP\n metadata, but they should NOT be a mixture of both -- if we mixed them somehow there is a bug in our code.", + "oneOf" : [ { + "description" : "Malli schema for a valid map of column metadata, which can mean one of two things:\n\n 1. Metadata about a particular Field in the application database. This will always have an `:id`\n\n 2. Results metadata from a column in `data.cols` and/or `data.results_metadata.columns` in a Query Processor\n response, or saved in something like `Card.result_metadata`. These *may* have an `:id`, or may not -- columns\n coming back from native queries or things like `SELECT count(*)` aren't associated with any particular `Field`\n and thus will not have an `:id`.\n\n Now maybe these should be two different schemas, but `:id` being there or not is the only real difference; besides\n that they are largely compatible. So they're the same for now. We can revisit this in the future if we actually want\n to differentiate between the two versions.", + "allOf" : [ { + "type" : "object", + "properties" : { + "visibility-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "fk-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/external-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.external" + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "lib/source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.source-column-alias" + }, + "database-type" : { + "type" : "string" + }, + "lib/type" : { + "default" : "metadata/column", + "const" : "metadata/column" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "display-name" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/deduplicated-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.deduplicated-name" + }, + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/original-expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "fk-field-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "type" : "string" + }, + "lib/card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "lib/expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/breakout?" : { + "type" : "boolean" + }, + "metabase.lib.field/temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "metabase.lib.field/binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/model-display-name" : { + "type" : "string" + }, + "has-field-values" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.has-field-values" + }, + "lib/internal-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.internal" + }, + "selected?" : { + "type" : "boolean" + }, + "source-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "metabase.lib.join/join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "lib/original-binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/original-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "lib/original-display-name" : { + "type" : "string" + }, + "lib/source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.source" + }, + "active" : { + "type" : "boolean" + }, + "lib/ref-display-name" : { + "type" : "string" + }, + "lib/original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "lib/hack-original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "fk-target-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "lib/desired-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.desired-column-alias" + } + }, + "required" : [ "lib/type", "name", "base-type" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.kebab-cased-map" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-expression-source" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-native-column" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-table-defaults-column" + } ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + } ] + }, + "metabase.lib.schema.metadata.original-name" : { + "type" : "string", + "description" : "The original name of the column as it appeared in the very first place it came from (i.e., the physical name of the\n column in the table it appears in). This should be the same as the `:lib/source-column-alias` for the very first\n usage of the column.\n Allowed to be blank because some databases like SQL Server allow blank column names.", + "optional" : true + }, + "metabase.lib.schema.metadata.source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "metabase.lib.schema.parameter..dimension.target" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-field-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-expression-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + } ] + }, + "metabase.lib.schema.parameter.DimensionOptions" : { + "type" : "object", + "properties" : { + "stage-number" : { + "type" : "integer" + } + } + }, + "metabase.lib.schema.parameter.dimension" : { }, + "metabase.lib.schema.parameter.legacy-expression-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, + "metabase.lib.schema.parameter.legacy-field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "metabase.lib.schema.parameter.parameter" : { + "type" : "object", + "properties" : { + "default" : { }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { }, + "slug" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "target" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.target" + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.type" + }, + "value" : { } + }, + "required" : [ "type" ] + }, + "metabase.lib.schema.parameter.target" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-field-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.dimension" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.variable" + } ] + }, + "metabase.lib.schema.parameter.template-tag" : { + "type" : "array", + "prefixItems" : [ { + "const" : "template-tag" + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + }, + "required" : [ "id" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } ] + } ] + }, + "metabase.lib.schema.parameter.type" : { + "type" : "string", + "enum" : [ "category", "date", "string/!=", "number/=", "string/ends-with", "location/state", "boolean/=", "number/between", "date/all-options", "number", "number/>=", "location/country", "temporal-unit", "string/=", "string/does-not-contain", "date/range", "string/starts-with", "string/contains", "date/single", "location/city", "id", "date/relative", "location/zip_code", "date/month-year", "date/quarter-year", "number/!=", "boolean", "text", "number/<=" ] + }, + "metabase.lib.schema.parameter.variable" : { + "type" : "array", + "prefixItems" : [ { + "const" : "variable" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + } ] + }, + "metabase.lib.schema.parameter.widget-type" : { + "type" : "string", + "enum" : [ "none", "category", "date", "string/!=", "number/=", "string/ends-with", "location/state", "boolean/=", "number/between", "date/all-options", "number", "number/>=", "location/country", "temporal-unit", "string/=", "string/does-not-contain", "date/range", "string/starts-with", "string/contains", "date/single", "location/city", "id", "date/relative", "location/zip_code", "date/month-year", "date/quarter-year", "number/!=", "boolean", "text", "number/<=" ] + }, + "metabase.lib.schema.template-tag..raw-value.type" : { + "type" : "string", + "enum" : [ "date", "number", "boolean", "text" ] + }, + "metabase.lib.schema.temporal-bucketing.unit" : { + "type" : "string", + "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "second-of-minute", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] + }, + "metabase.logger.api.log-level" : { + "type" : "string", + "enum" : [ "off", "fatal", "error", "warn", "info", "debug", "trace" ] + }, + "metabase.logger.api.time-unit" : { + "type" : "string", + "enum" : [ "days", "hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds" ] + }, + "metabase.notification.models.FullyHydratedNotification" : { + "description" : "Fully hydrated notification.", + "oneOf" : [ { + "oneOf" : [ { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" + }, + "payload_id" : { + "type" : "null" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type", "payload" ] + }, { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload_id" : { + "type" : "null" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type" ] + } ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "creator_id" : { + "type" : "integer" + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" + }, + "payload_id" : { + "type" : "integer" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type", "payload" ] + }, { "type" : "object", "properties" : { "creator" : { "type" : "object", "properties" : { } }, + "creator_id" : { + "type" : "integer" + }, "handlers" : { "type" : "array", "items" : { @@ -1357,11 +4480,8 @@ "required" : [ "channel_type" ] } }, - "payload" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" - }, "payload_id" : { - "type" : "null" + "type" : "integer" }, "payload_type" : { "type" : "string", @@ -1374,8 +4494,8 @@ } } }, - "required" : [ "payload_type", "payload" ] - }, { } ] + "required" : [ "payload_type" ] + } ] }, { "oneOf" : [ { "type" : "object", @@ -1384,9 +4504,6 @@ "type" : "object", "properties" : { } }, - "creator_id" : { - "type" : "integer" - }, "handlers" : { "type" : "array", "items" : { @@ -1430,13 +4547,6 @@ "payload" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" }, - "payload_id" : { - "type" : "integer" - }, - "payload_type" : { - "type" : "string", - "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] - }, "subscriptions" : { "type" : "array", "items" : { @@ -1444,10 +4554,8 @@ } } }, - "required" : [ "payload_type", "payload" ] - }, { } ] - }, { - "oneOf" : [ { + "required" : [ "payload" ] + }, { "type" : "object", "properties" : { "creator" : { @@ -1494,18 +4602,14 @@ "required" : [ "channel_type" ] } }, - "payload" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" - }, "subscriptions" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" } } - }, - "required" : [ "payload" ] - }, { } ] + } + } ] } ] }, "metabase.notification.models.Notification" : { @@ -1821,6 +4925,16 @@ } } }, + "metabase.timeline.api.timeline.Timeline" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id" ] + }, "metabase.timeline.api.timeline.include" : { "type" : "string", "enum" : [ "events" ] @@ -1880,6 +4994,18 @@ } }, "required" : [ "schedule_type" ] + }, + "metabot.reaction.redirect" : { + "type" : "object", + "properties" : { + "type" : { + "const" : "metabot.reaction/redirect" + }, + "url" : { + "type" : "string" + } + }, + "required" : [ "type", "url" ] } } }, @@ -1898,12 +5024,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "post" : { "summary" : "POST /api/action/", "description" : "Create a new action.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2008,6 +5156,17 @@ "summary" : "GET /api/action/public", "description" : "Fetch a list of Actions with public UUIDs. These actions are publicly-accessible *if* public sharing is enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2025,6 +5184,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "delete" : { @@ -2040,6 +5210,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2065,6 +5246,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2082,6 +5274,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2201,6 +5404,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2234,6 +5448,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "delete" : { @@ -2249,6 +5474,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2257,6 +5493,17 @@ "summary" : "GET /api/activity/most_recently_viewed_dashboard", "description" : "Get the most recently viewed dashboard for the current user. Returns a 204 if the user has not viewed any dashboards\n in the last 24 hours.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2265,6 +5512,17 @@ "summary" : "GET /api/activity/popular_items", "description" : "Get the list of 5 popular things on the instance. Query takes 8 and limits to 5 so that if it finds anything\n archived, deleted, etc it can usually still get 5. ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2273,6 +5531,17 @@ "summary" : "GET /api/activity/recent_views", "description" : "Get a list of 100 models (cards, models, tables, dashboards, and collections) that the current user has been viewing most\n recently. Return a maximum of 20 model of each, if they've looked at at least 20.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2300,12 +5569,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] }, "post" : { "summary" : "POST /api/activity/recents", "description" : "Adds a model to the list of recently selected items.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2356,6 +5647,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2373,6 +5675,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2390,6 +5703,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2398,6 +5722,17 @@ "summary" : "GET /api/analytics/anonymous-stats", "description" : "Anonymous usage stats. Endpoint for testing, and eventually exposing this to instance admins to let them see\n what is being phoned home.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/analytics" ] } }, @@ -2406,6 +5741,17 @@ "summary" : "POST /api/api-key/", "description" : "Create a new API key (and an associated `User`) with the provided name and group ID.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2433,6 +5779,17 @@ "summary" : "GET /api/api-key/", "description" : "Get a list of API keys with the default scope. Non-paginated.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2441,6 +5798,17 @@ "summary" : "GET /api/api-key/count", "description" : "Get the count of API keys in the DB with the default scope.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2458,6 +5826,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2493,6 +5872,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2510,6 +5900,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2527,6 +5928,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2549,6 +5961,17 @@ "type" : "integer" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2577,6 +6000,17 @@ } ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2621,6 +6055,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2674,6 +6119,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2729,6 +6185,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2793,6 +6260,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2840,6 +6318,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2856,6 +6345,17 @@ "enum" : [ "adhoc", "transform", "table", "question", "field", "segment", "model" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2905,6 +6405,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2963,6 +6474,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2971,6 +6493,17 @@ "summary" : "GET /api/bookmark/", "description" : "Fetch all bookmarks for the user", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] } }, @@ -2979,6 +6512,17 @@ "summary" : "PUT /api/bookmark/ordering", "description" : "Sets the order of bookmarks for user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3034,6 +6578,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] }, "delete" : { @@ -3057,6 +6612,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] } }, @@ -3065,6 +6631,17 @@ "summary" : "GET /api/bug-reporting/connection-pool-details", "description" : "Returns database connection pool info for the current Metabase instance.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bug-reporting" ] } }, @@ -3073,6 +6650,17 @@ "summary" : "GET /api/bug-reporting/details", "description" : "Returns version and system information relevant to filing a bug report against Metabase.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bug-reporting" ] } }, @@ -3112,12 +6700,34 @@ }, "description" : "Model id to get configuration for." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cache" ] }, "put" : { "summary" : "PUT /api/cache/", "description" : "Store cache configuration.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3148,6 +6758,17 @@ "summary" : "DELETE /api/cache/", "description" : "Delete cache configurations.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3227,6 +6848,17 @@ }, "description" : "A list of question ids" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cache" ] } }, @@ -3253,12 +6885,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "post" : { "summary" : "POST /api/card/", "description" : "Create a new `Card`. Card `type` can be `question`, `metric`, or `model`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3348,6 +7002,17 @@ "summary" : "POST /api/card/collections", "description" : "Bulk update endpoint for Card Collections. Move a set of `Cards` with `card_ids` into a `Collection` with\n `collection_id`, or remove them from any Collections by passing a `null` `collection_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3381,6 +7046,17 @@ "summary" : "GET /api/card/embeddable", "description" : "Fetch a list of Cards where `enable_embedding` is `true`. The cards can be embedded using the embedding endpoints\n and a signed JWT.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3398,6 +7074,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3420,6 +7107,17 @@ "summary" : "GET /api/card/public", "description" : "Fetch a list of Cards with public UUIDs. These cards are publicly-accessible *if* public sharing is enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3453,6 +7151,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3478,6 +7187,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3495,6 +7215,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "delete" : { @@ -3510,6 +7241,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3522,11 +7264,28 @@ "name" : "card-id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3575,6 +7334,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3614,10 +7384,16 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } }, { "in" : "query", "name" : "ignore_view", @@ -3634,6 +7410,17 @@ "enum" : [ "collection" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "put" : { @@ -3656,6 +7443,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3757,6 +7555,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3774,6 +7583,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3791,6 +7611,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3822,6 +7653,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3834,11 +7676,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3876,6 +7735,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3884,6 +7754,17 @@ "summary" : "POST /api/cards/dashboards", "description" : "Get the dashboards that multiple cards appear in. The response is a sequence of maps, each of which has a `card_id`\n and `dashboards`. `dashboard` may include an `:error` key, either `:unreadable-dashboard` or\n `:unwritable-dashboard`. In the case of an `unreadable-dashboard` the dashboard details (name, ID) will NOT be\n present.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3912,6 +7793,17 @@ "summary" : "POST /api/cards/move", "description" : "Moves a number of Cards to a single collection or dashboard.\n\n For now, just either succeed or fail as a batch - we can think more about error handling later down the road.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3950,6 +7842,17 @@ "summary" : "GET /api/channel/", "description" : "Get all channels", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3971,6 +7874,17 @@ "summary" : "POST /api/channel/", "description" : "Create a channel", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4010,6 +7924,17 @@ "summary" : "POST /api/channel/test", "description" : "Test a channel connection", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4046,6 +7971,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/channel" ] }, "put" : { @@ -4061,6 +7997,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4098,12 +8045,34 @@ "summary" : "POST /api/cloud-migration/", "description" : "Initiate a new cloud migration.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] }, "get" : { "summary" : "GET /api/cloud-migration/", "description" : "Get the latest cloud migration, if any.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] } }, @@ -4112,6 +8081,17 @@ "summary" : "PUT /api/cloud-migration/cancel", "description" : "Cancel any ongoing cloud migrations, if any.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] } }, @@ -4152,12 +8132,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "post" : { "summary" : "POST /api/collection/", "description" : "Create a new Collection.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4207,6 +8209,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "put" : { @@ -4229,6 +8242,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4269,6 +8293,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4277,6 +8312,24 @@ "summary" : "GET /api/collection/root/dashboard-question-candidates", "description" : "Find cards in the root collection that can be moved into dashboards in the root collection. (Same as the above\n endpoint, but for the root collection)", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:data -> , :name -> , :description -> , :sole_dashboard_info -> , :name -> , :description -> }>}>, :total -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4358,6 +8411,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4366,6 +8430,24 @@ "summary" : "POST /api/collection/root/move-dashboard-question-candidates", "description" : "Move candidate cards to the dashboards they appear in (for the root collection)", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:moved -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.MoveDashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4395,6 +8477,17 @@ "summary" : "GET /api/collection/trash", "description" : "Fetch the trash collection, as in `/api/collection/:trash-id`", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4444,6 +8537,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4456,11 +8560,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "put" : { @@ -4476,6 +8597,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4526,6 +8658,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:data -> , :name -> , :description -> , :sole_dashboard_info -> , :name -> , :description -> }>}>, :total -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4538,10 +8688,16 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } }, { "in" : "query", "name" : "models", @@ -4609,6 +8765,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4626,6 +8793,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:moved -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.MoveDashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4663,12 +8848,34 @@ "enum" : [ "all", "mine", "archived" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "post" : { "summary" : "POST /api/dashboard/", "description" : "Create a new Dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4717,6 +8924,17 @@ "summary" : "GET /api/dashboard/embeddable", "description" : "Fetch a list of Dashboards where `enable_embedding` is `true`. The dashboards can be embedded using the embedding\n endpoints and a signed JWT.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4749,6 +8967,17 @@ } } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4784,6 +9013,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4822,6 +9062,17 @@ "summary" : "GET /api/dashboard/public", "description" : "Fetch a list of Dashboards with public UUIDs. These dashboards are publicly-accessible *if* public sharing is\n enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4830,6 +9081,17 @@ "summary" : "POST /api/dashboard/save", "description" : "Save a denormalized description of dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4847,6 +9109,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4882,6 +9155,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4958,6 +9242,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5036,6 +9331,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "post" : { @@ -5060,6 +9366,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5092,6 +9409,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -5107,6 +9435,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5124,6 +9463,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5169,11 +9519,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -5189,6 +9556,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "put" : { @@ -5204,6 +9582,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5370,6 +9759,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5477,6 +9877,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5508,6 +9919,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5533,6 +9955,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5550,6 +9983,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5562,11 +10006,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5584,6 +10045,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5649,12 +10121,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] }, "post" : { "summary" : "POST /api/database/", "description" : "Add a new `Database`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5713,6 +10207,17 @@ "summary" : "POST /api/database/sample_database", "description" : "Add the sample database as a new `Database`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5721,6 +10226,17 @@ "summary" : "POST /api/database/validate", "description" : "Validate that we can connect to a database given a set of details.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5787,6 +10303,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] }, "put" : { @@ -5802,6 +10329,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5870,6 +10408,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5903,6 +10452,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5935,6 +10495,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5952,6 +10523,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5969,6 +10551,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5986,6 +10579,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6003,6 +10607,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6020,6 +10635,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6069,6 +10695,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6086,6 +10723,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6119,6 +10767,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6152,6 +10811,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6185,6 +10855,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6202,6 +10883,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6219,6 +10911,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6236,6 +10939,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6244,6 +10958,17 @@ "summary" : "GET /api/database/{virtual-db}/datasets", "description" : "Returns a list of all the datasets found for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6252,6 +10977,17 @@ "summary" : "GET /api/database/{virtual-db}/datasets/{schema}", "description" : "Returns a list of Tables for the datasets virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6260,6 +10996,17 @@ "summary" : "GET /api/database/{virtual-db}/metadata", "description" : "Endpoint that provides metadata for the Saved Questions 'virtual' database. Used for fooling the frontend\n and allowing it to treat the Saved Questions virtual DB just like any other database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6268,6 +11015,17 @@ "summary" : "GET /api/database/{virtual-db}/schema/{schema}", "description" : "Returns a list of Tables for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6276,6 +11034,17 @@ "summary" : "GET /api/database/{virtual-db}/schemas", "description" : "Returns a list of all the schemas found for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6284,6 +11053,17 @@ "summary" : "POST /api/dataset/", "description" : "Execute a query and retrieve the results in the usual format. The query will not use the cache.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6306,6 +11086,17 @@ "summary" : "POST /api/dataset/native", "description" : "Fetch a native version of an MBQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6335,6 +11126,17 @@ "summary" : "POST /api/dataset/parameter/remapping", "description" : "Return the remapped parameter values for cards or dashboards that are being edited.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6373,6 +11175,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6402,6 +11215,17 @@ "summary" : "POST /api/dataset/parameter/values", "description" : "Return parameter values for cards or dashboards that are being edited.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6431,6 +11255,17 @@ "summary" : "POST /api/dataset/pivot", "description" : "Generate a pivoted dataset for an ad-hoc query", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6456,6 +11291,17 @@ "summary" : "POST /api/dataset/query_metadata", "description" : "Get all of the required query metadata for an ad-hoc query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6488,6 +11334,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6525,6 +11382,17 @@ "summary" : "GET /api/ee/advanced-permissions/application/graph", "description" : "Fetch a graph of Application Permissions.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/application" ] }, "put" : { @@ -6547,6 +11415,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6583,6 +11462,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/impersonation" ] } }, @@ -6600,6 +11490,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/impersonation" ] } }, @@ -6608,6 +11509,17 @@ "summary" : "POST /api/ee/ai-entity-analysis/analyze-chart", "description" : "Analyze a chart image using an AI vision model. This function sends the image data to a separate external AI service for analysis.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6655,6 +11567,17 @@ "summary" : "POST /api/ee/ai-sql-fixer/fix", "description" : "Suggest fixes for a SQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6689,6 +11612,17 @@ "summary" : "POST /api/ee/ai-sql-generation/generate", "description" : "Generate a SQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6718,6 +11652,17 @@ "summary" : "GET /api/ee/audit-app/user/audit-info", "description" : "Gets audit info for the current user if he has permissions to access the audit collection.\n Otherwise return an empty map.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/audit-app/user" ] } }, @@ -6735,6 +11680,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/audit-app/user" ] } }, @@ -6743,6 +11699,17 @@ "summary" : "POST /api/ee/autodescribe/card/summarize", "description" : "Summarize a question.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6823,6 +11790,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/autodescribe" ] } }, @@ -6831,6 +11809,17 @@ "summary" : "GET /api/ee/billing/", "description" : "Get billing information. This acts as a proxy between `metabase-billing-info-url` and the client,\n using the embedding token and signed in user's email to fetch the billing information.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/billing" ] } }, @@ -6839,6 +11828,17 @@ "summary" : "GET /api/ee/content-translation/csv", "description" : "Provides content translation dictionary in CSV", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -6854,6 +11854,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -6862,6 +11873,17 @@ "summary" : "POST /api/ee/content-translation/upload-dictionary", "description" : "Upload a CSV of content translations", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -6887,6 +11909,60 @@ "tags" : [ "/api/ee/content-translation" ] } }, + "/api/ee/database-replication/connection/{database-id}" : { + "post" : { + "summary" : "POST /api/ee/database-replication/connection/{database-id}", + "description" : "Create a new PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/database-replication" ] + }, + "delete" : { + "summary" : "DELETE /api/ee/database-replication/connection/{database-id}", + "description" : "Delete PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/database-replication" ] + } + }, "/api/ee/database-routing/destination-database" : { "post" : { "summary" : "POST /api/ee/database-routing/destination-database", @@ -6899,6 +11975,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6951,6 +12038,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6969,11 +12067,111 @@ "tags" : [ "/api/ee/database-routing" ] } }, + "/api/ee/email/override" : { + "put" : { + "summary" : "PUT /api/ee/email/override", + "description" : "Update multiple cloud email Settings. You must be a superuser or have `setting` permission to do this.\n Calling this automatically sets `cloud-smtp-enabled` to true if the settings are valid.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email-smtp-host-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-password-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-port-override" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "email-smtp-security-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-username-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/email" ] + }, + "delete" : { + "summary" : "DELETE /api/ee/email/override", + "description" : "Clear all cloud email related settings. You must be a superuser or have `setting` permission to do this.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/email" ] + } + }, "/api/ee/gsheets/connection" : { "post" : { "summary" : "POST /api/ee/gsheets/connection", "description" : "Hook up a new google drive folder or sheet that will be watched and have its content ETL'd into Metabase.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:error -> , :message -> }, or one of , :created_at -> , :sync_started_at -> , :created_by_id -> , :db_id -> } | active = map where {:url -> , :created_at -> , :last_sync_at -> , :next_sync_at -> , :created_by_id -> , :db_id -> } | error = map where {:url -> , :created_at -> , :error_message -> , :created_by_id -> , :db_id -> }> dispatched by :status", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6996,12 +12194,41 @@ "summary" : "GET /api/ee/gsheets/connection", "description" : "Check the status of a connection. This endpoint gets polled by FE to determine when to\n stop showing the setup widget.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:error -> , :message -> }, or one of , :created_at -> , :sync_started_at -> , :created_by_id -> , :db_id -> } | active = map where {:url -> , :created_at -> , :last_sync_at -> , :next_sync_at -> , :created_by_id -> , :db_id -> } | error = map where {:url -> , :created_at -> , :error_message -> , :created_by_id -> , :db_id -> }> dispatched by :status", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] }, "delete" : { "summary" : "DELETE /api/ee/gsheets/connection", "description" : "Disconnect the google service account. There is only one (or zero) at the time of writing.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7010,6 +12237,17 @@ "summary" : "POST /api/ee/gsheets/connection/sync", "description" : "Force a sync of the connection now.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7018,6 +12256,30 @@ "summary" : "GET /api/ee/gsheets/service-account", "description" : "Checks to see if service-account is setup or not, delegates to HM only if we haven't set it from a metabase cluster\n before.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:email -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" + } + }, + "required" : [ ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7035,6 +12297,17 @@ }, "description" : "Must be a string like 2020-04 or 2222-11." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/logs" ] } }, @@ -7043,6 +12316,32 @@ "summary" : "POST /api/ee/metabot-tools/answer-sources", "description" : "Return top level meta information about available information sources.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7071,6 +12370,35 @@ "summary" : "POST /api/ee/metabot-tools/create-dashboard-subscription", "description" : "Create a dashboard subscription.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:output -> , :conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "output" : { + "type" : "string" + } + }, + "required" : [ "output", "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7099,6 +12427,32 @@ "summary" : "POST /api/ee/metabot-tools/field-values", "description" : "Return statistics and/or values for a given field of a given entity.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7127,6 +12481,32 @@ "summary" : "POST /api/ee/metabot-tools/filter-records", "description" : "Construct a query from a metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7155,6 +12535,32 @@ "summary" : "POST /api/ee/metabot-tools/find-metric", "description" : "Find a metric matching a description.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7189,6 +12595,32 @@ "summary" : "POST /api/ee/metabot-tools/find-outliers", "description" : "Find outliers in the values provided by a data source for a given column.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7217,6 +12649,41 @@ "summary" : "POST /api/ee/metabot-tools/generate-insights", "description" : "Generate insights.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:output -> , :reactions -> , :url -> }>, :conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "output" : { + "type" : "string" + }, + "reactions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabot.reaction.redirect" + } + } + }, + "required" : [ "output", "reactions", "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7245,6 +12712,32 @@ "summary" : "POST /api/ee/metabot-tools/get-current-user", "description" : "Get information about user that started the conversation.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7262,6 +12755,32 @@ "summary" : "POST /api/ee/metabot-tools/get-dashboard-details", "description" : "Get information about a given dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7296,6 +12815,32 @@ "summary" : "POST /api/ee/metabot-tools/get-metric-details", "description" : "Get information about a given metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7324,6 +12869,32 @@ "summary" : "POST /api/ee/metabot-tools/get-query-details", "description" : "Get information about a given query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7359,6 +12930,32 @@ "summary" : "POST /api/ee/metabot-tools/get-report-details", "description" : "Get information about a given report.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7387,6 +12984,32 @@ "summary" : "POST /api/ee/metabot-tools/get-table-details", "description" : "Get information about a given table or model.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7415,6 +13038,32 @@ "summary" : "POST /api/ee/metabot-tools/query-metric", "description" : "Construct a query from a metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7443,6 +13092,32 @@ "summary" : "POST /api/ee/metabot-tools/query-model", "description" : "Construct a query from a model.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7471,6 +13146,17 @@ "summary" : "GET /api/ee/metabot-v3/metabot/", "description" : "List configured metabot instances", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7487,6 +13173,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7503,6 +13200,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "put" : { @@ -7517,6 +13225,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7578,6 +13297,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7617,6 +13347,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "delete" : { @@ -7631,6 +13372,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7647,6 +13399,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7671,6 +13434,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7679,6 +13453,17 @@ "summary" : "POST /api/ee/metabot-v3/v2/agent", "description" : "Send a chat message to the LLM via the AI Service.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7721,6 +13506,17 @@ "summary" : "POST /api/ee/metabot-v3/v2/agent-streaming", "description" : "Send a chat message to the LLM via the AI Proxy.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7758,48 +13554,39 @@ "tags" : [ "/api/ee/metabot-v3" ] } }, - "/api/ee/permission_debug/" : { - "get" : { - "summary" : "GET /api/ee/permission_debug/", - "description" : "This endpoint expects a `user_id`, a `model_id` to debug permissions against, and `action_type`.\n The type of model we are debugging against is inferred by the `action_type`.\n\n It will return:\n - `decision`: The overall permission decision (\"allow\", \"denied\", or \"limited\")\n - `model-type`: The type of model being checked (e.g., \"question\")\n - `model-id`: The ID of the model being checked\n - `segment`: A set of segmentation types applied (e.g., \"sandboxed\", \"impersonated\", \"routed\")\n - `message`: A sequence of strings explaining the decision\n - `data`: A map containing details about permissions (table or collection names to group names)\n - `suggestions`: A map of group IDs to group names that could provide access\n\n Example requests:\n - Check if user can read a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/read`\n - Check if user can query a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/query`\n - Check if user can download data: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/download-data`\n\n Example responses:\n - Allowed access:\n ```json\n {\n \"decision\": \"allow\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to read this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```\n - Denied access with blocked table:\n ```json\n {\n \"decision\": \"denied\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User does not have permission to query this card\"],\n \"data\": {\"sample-db.PUBLIC.ORDERS\": [\"All Users\"]},\n \"suggestions\": {}\n }\n ```\n - Limited access:\n ```json\n {\n \"decision\": \"limited\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to download some data from this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```", - "parameters" : [ { - "in" : "query", - "name" : "user_id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - } - }, { - "in" : "query", - "name" : "model_id", - "required" : true, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "action_type", - "required" : true, - "schema" : { - "type" : "string", - "enum" : [ "card/read", "card/query", "card/download-data" ] - } - } ], - "tags" : [ "/api/ee/permission_debug" ] - } - }, "/api/ee/scim/api_key" : { "get" : { "summary" : "GET /api/ee/scim/api_key", "description" : "Fetch the SCIM API key if one exists. Does *not* return an unmasked key, since we don't have access\n to that after it is created.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim" ] }, "post" : { "summary" : "POST /api/ee/scim/api_key", "description" : "Create a new SCIM API key, or refresh one that already exists. When called for the first time,\n this is equivalent to enabling SCIM.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim" ] } }, @@ -7834,12 +13621,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "post" : { "summary" : "POST /api/ee/scim/v2/Groups", "description" : "Create a single group, and populates it if necessary.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7900,12 +13709,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "put" : { "summary" : "PUT /api/ee/scim/v2/Groups/{id}", "description" : "Update a group.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7964,6 +13795,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] } }, @@ -7998,12 +13840,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "post" : { "summary" : "POST /api/ee/scim/v2/Users", "description" : "Create a single user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8107,12 +13971,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "put" : { "summary" : "PUT /api/ee/scim/v2/Users/{id}", "description" : "Update a user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8214,6 +14100,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8346,7 +14243,18 @@ "default" : false, "type" : "boolean" } - } ], + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/serialization" ] } }, @@ -8371,6 +14279,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -8455,6 +14374,17 @@ "enum" : [ "asc", "desc" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/stale" ] } }, @@ -8463,6 +14393,17 @@ "summary" : "GET /api/ee/upload-management/tables", "description" : "Get all `Tables` visible to the current user which were created by uploading a file.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/upload-management" ] } }, @@ -8488,6 +14429,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/upload-management" ] } }, @@ -8496,6 +14448,17 @@ "summary" : "POST /api/eid-translation/translate", "description" : "Translate entity IDs to model IDs.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8520,12 +14483,59 @@ "summary" : "PUT /api/email/", "description" : "Update multiple email Settings. You must be a superuser or have `setting` permission to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { "schema" : { "type" : "object", - "properties" : { } + "properties" : { + "email-smtp-host" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-password" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-port" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "email-smtp-security" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-username" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } } } } @@ -8536,6 +14546,17 @@ "summary" : "DELETE /api/email/", "description" : "Clear all email related settings. You must be a superuser or have `setting` permission to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/email" ] } }, @@ -8544,6 +14565,17 @@ "summary" : "POST /api/email/test", "description" : "Send a test email using the SMTP Settings. You must be a superuser or have `setting` permission to do this.\n Returns `{:ok true}` if we were able to send the message successfully, otherwise a standard 400 error response.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/email" ] } }, @@ -8559,6 +14591,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8588,6 +14631,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8596,6 +14650,17 @@ "summary" : "GET /api/embed/card/{token}/params/{param-key}/search/{prefix}", "description" : "Embedded version of chain filter search endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8618,6 +14683,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8633,6 +14709,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8671,6 +14758,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8686,6 +14784,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8719,6 +14828,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8768,6 +14888,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8776,6 +14907,17 @@ "summary" : "GET /api/embed/dashboard/{token}/params/{param-key}/remapping", "description" : "Embedded version of the remapped dashboard param value endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8784,6 +14926,17 @@ "summary" : "GET /api/embed/dashboard/{token}/params/{param-key}/search/{prefix}", "description" : "Embedded version of chain filter search endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8806,6 +14959,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8821,6 +14985,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8854,6 +15029,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8915,6 +15101,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8994,6 +15191,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -9019,6 +15227,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] }, "put" : { @@ -9034,6 +15253,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9111,6 +15341,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9151,6 +15392,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9168,6 +15420,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9185,6 +15448,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9219,6 +15493,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9236,6 +15521,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9270,6 +15566,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9287,6 +15594,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9304,6 +15622,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] }, "post" : { @@ -9319,6 +15648,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9362,6 +15702,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/geojson" ] } }, @@ -9378,6 +15729,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/geojson" ] } }, @@ -9386,6 +15748,17 @@ "summary" : "PUT /api/google/settings", "description" : "Update Google Sign-In related settings. You must be a superuser to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9414,6 +15787,17 @@ "summary" : "PUT /api/ldap/settings", "description" : "Update LDAP related settings. You must be a superuser to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9446,6 +15830,17 @@ "summary" : "POST /api/logger/adjustment", "description" : "Temporarily adjust the log levels.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9471,6 +15866,17 @@ "summary" : "DELETE /api/logger/adjustment", "description" : "Undo any log level adjustments.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9479,6 +15885,17 @@ "summary" : "GET /api/logger/logs", "description" : "Logs.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9487,6 +15904,51 @@ "summary" : "GET /api/logger/presets", "description" : "Get all known presets.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "sequence of map where {:id -> , :display_name -> , :loggers -> , :level -> }>}", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "display_name" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "loggers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "level" : { + "$ref" : "#/components/schemas/metabase.logger.api.log-level" + }, + "name" : { + "type" : "string" + } + }, + "required" : [ "name", "level" ] + } + } + }, + "required" : [ "id", "display_name", "loggers" ] + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9495,6 +15957,17 @@ "summary" : "GET /api/login-history/current", "description" : "Fetch recent logins for the current user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/login-history" ] } }, @@ -9503,6 +15976,17 @@ "summary" : "POST /api/model-index/", "description" : "Create ModelIndex.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9537,6 +16021,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] } }, @@ -9554,6 +16049,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] }, "delete" : { @@ -9569,6 +16075,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] } }, @@ -9577,6 +16094,17 @@ "summary" : "POST /api/moderation-review/", "description" : "Create a new `ModerationReview`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9630,12 +16158,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] }, "post" : { "summary" : "POST /api/mt/gtap/", "description" : "Create a new GTAP.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9672,6 +16222,17 @@ "summary" : "POST /api/mt/gtap/validate", "description" : "Validate a sandbox which may not have yet been saved. This runs the same validation that is performed when the\n sandbox is saved, but doesn't actually save the sandbox.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9711,6 +16272,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] }, "put" : { @@ -9726,6 +16298,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9758,6 +16341,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] } }, @@ -9766,6 +16360,17 @@ "summary" : "GET /api/mt/user/attributes", "description" : "Fetch a list of possible keys for User `login_attributes`. This just looks at keys that have already been set for\n existing Users and returns those. ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/user" ] } }, @@ -9783,6 +16388,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9815,12 +16431,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/native-query-snippet" ] }, "post" : { "summary" : "POST /api/native-query-snippet/", "description" : "Create a new `NativeQuerySnippet`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9864,6 +16502,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/native-query-snippet" ] }, "put" : { @@ -9879,6 +16528,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9966,12 +16626,34 @@ "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] }, "post" : { "summary" : "POST /api/notification/", "description" : "Create a new notification, return the created notification.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9989,6 +16671,17 @@ "summary" : "POST /api/notification/send", "description" : "Send an unsaved notification.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10006,6 +16699,17 @@ "summary" : "POST /api/notification/unsubscribe/", "description" : "Allow non-users to unsubscribe from notifications, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10037,6 +16741,17 @@ "summary" : "POST /api/notification/unsubscribe/undo", "description" : "Allow non-users to undo an unsubscribe from notifications, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10077,6 +16792,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] }, "put" : { @@ -10092,6 +16818,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10118,6 +16855,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10154,6 +16902,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] } }, @@ -10162,6 +16921,17 @@ "summary" : "POST /api/notify/db/attached_datawarehouse", "description" : "Sync the attached datawarehouse. Can provide in the body:\n - table_name and schema_name: both strings. Will look for an existing table and sync it, otherwise will try to find a\n new table with that name and sync it. If it cannot find a table it will throw an error. If table_name is empty or\n blank, will sync the entire database.\n - synchronous?: is a boolean value to indicate if this should block on the result.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10202,6 +16972,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10243,6 +17024,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10271,6 +17063,17 @@ "summary" : "GET /api/permissions/graph", "description" : "Fetch a graph of all Permissions.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "put" : { @@ -10293,6 +17096,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10320,6 +17134,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10337,6 +17162,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10345,12 +17181,34 @@ "summary" : "GET /api/permissions/group", "description" : "Fetch all `PermissionsGroups`, including a count of the number of `:members` in that group.\n This API requires superuser or group manager of more than one group.\n Group manager is only available if `advanced-permissions` is enabled and returns only groups that user\n is manager of.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "post" : { "summary" : "POST /api/permissions/group", "description" : "Create a new `PermissionsGroup`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10384,6 +17242,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10415,6 +17284,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10432,6 +17312,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10440,12 +17331,34 @@ "summary" : "GET /api/permissions/membership", "description" : "Fetch a map describing the group memberships of various users.\n This map's format is:\n\n { [{:membership_id \n :group_id \n :is_group_manager boolean}]}", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "post" : { "summary" : "POST /api/permissions/membership", "description" : "Add a `User` to a `PermissionsGroup`. Returns updated list of members belonging to the group.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10489,6 +17402,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10506,6 +17430,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10536,6 +17471,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10544,6 +17490,17 @@ "summary" : "GET /api/persist/", "description" : "List the entries of [[PersistedInfo]] in order to show a status page.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10561,6 +17518,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10578,6 +17546,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10595,6 +17574,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10612,6 +17602,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10629,6 +17630,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10646,6 +17658,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10654,6 +17677,17 @@ "summary" : "POST /api/persist/disable", "description" : "Disable global setting to allow databases to persist models. This will remove all tasks to refresh tables, remove\n that option from databases which might have it enabled, and delete all cached tables.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10662,6 +17696,17 @@ "summary" : "POST /api/persist/enable", "description" : "Enable global setting to allow databases to persist models.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10670,6 +17715,17 @@ "summary" : "POST /api/persist/set-refresh-schedule", "description" : "Set the cron schedule to refresh persisted models.\n Shape should be JSON like {cron: \"0 30 1/8 * * ? *\"}.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10704,6 +17760,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10712,6 +17779,17 @@ "summary" : "GET /api/premium-features/token/status", "description" : "Fetch info about the current Premium-Features premium features token including whether it is `valid`, a `trial` token, its\n `features`, when it is `valid-thru`, and the `status` of the account.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/premium-features" ] } }, @@ -10728,6 +17806,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10757,6 +17846,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10773,6 +17873,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10789,6 +17900,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10823,6 +17945,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10831,6 +17964,17 @@ "summary" : "GET /api/preview_embed/dashboard/{token}/params/{param-key}/remapping", "description" : "Embedded version of the remapped dashboard param value endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10839,6 +17983,17 @@ "summary" : "GET /api/preview_embed/dashboard/{token}/params/{param-key}/values", "description" : "Embedded version of chain filter values endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10855,6 +18010,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10889,6 +18055,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10897,6 +18074,17 @@ "summary" : "POST /api/product-feedback/", "description" : "Endpoint to provide feedback from the product", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10938,6 +18126,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -10955,6 +18154,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10987,6 +18197,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11017,6 +18238,17 @@ "required" : true, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11050,6 +18282,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11075,6 +18318,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11100,6 +18354,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11148,6 +18413,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11165,6 +18441,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11208,6 +18495,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11250,6 +18548,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11311,6 +18620,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] }, "post" : { @@ -11335,6 +18655,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11380,6 +18711,17 @@ "required" : true, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11413,6 +18755,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11438,6 +18791,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11481,6 +18845,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11506,6 +18881,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11549,6 +18935,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11612,6 +19009,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11693,6 +19101,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11726,12 +19145,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] }, "post" : { "summary" : "POST /api/pulse/", "description" : "Create a new `Pulse`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11784,6 +19225,17 @@ "summary" : "GET /api/pulse/form_input", "description" : "Provides relevant configuration information and user choices for creating/updating Pulses.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11801,6 +19253,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11818,6 +19281,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11835,6 +19309,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11852,6 +19337,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11860,6 +19356,17 @@ "summary" : "POST /api/pulse/test", "description" : "Test send an unsaved pulse.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11905,6 +19412,17 @@ "summary" : "POST /api/pulse/unsubscribe/", "description" : "Allow non-users to unsubscribe from pulses/subscriptions, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11936,6 +19454,17 @@ "summary" : "POST /api/pulse/unsubscribe/undo", "description" : "Allow non-users to undo an unsubscribe from pulses/subscriptions, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11976,6 +19505,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] }, "put" : { @@ -11991,6 +19531,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12047,6 +19598,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -12072,6 +19634,17 @@ "enum" : [ "card", "dashboard", "segment" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/revision" ] } }, @@ -12080,6 +19653,17 @@ "summary" : "POST /api/revision/revert", "description" : "Revert an object to a prior revision.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12131,13 +19715,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/revision" ] } }, "/api/search/" : { "get" : { "summary" : "GET /api/search/", - "description" : "Search for items in Metabase.\n For the list of supported models, check [[metabase.search.config/all-models]].\n\n Filters:\n - `archived`: set to true to search archived items only, default is false\n - `table_db_id`: search for tables, cards, and models of a certain DB\n - `models`: only search for items of specific models. If not provided, search for all models\n - `filters_items_in_personal_collection`: only search for items in personal collections\n - `created_at`: search for items created at a specific timestamp\n - `created_by`: search for items created by a specific user\n - `last_edited_at`: search for items last edited at a specific timestamp\n - `last_edited_by`: search for items last edited by a specific user\n - `search_native_query`: set to true to search the content of native queries\n - `verified`: set to true to search for verified items only (requires Content Management or Official Collections premium feature)\n - `ids`: search for items with those ids, works iff single value passed to `models`\n\n Note that not all item types support all filters, and the results will include only models that support the provided filters. For example:\n - The `created-by` filter supports dashboards, models, actions, and cards.\n - The `verified` filter supports models and cards.\n\n A search query that has both filters applied will only return models and cards.", + "description" : "Search for items in Metabase.\n For the list of supported models, check [[metabase.search.config/all-models]].\n\n Filters:\n - `archived`: set to true to search archived items only, default is false\n - `table_db_id`: search for tables, cards, and models of a certain DB\n - `models`: only search for items of specific models. If not provided, search for all models\n - `filters_items_in_personal_collection`: only search for items in personal collections\n - `created_at`: search for items created at a specific timestamp\n - `created_by`: search for items created by a specific user\n - `last_edited_at`: search for items last edited at a specific timestamp\n - `last_edited_by`: search for items last edited by a specific user\n - `search_native_query`: set to true to search the content of native queries\n - `verified`: set to true to search for verified items only (requires Content Management or Official Collections premium feature)\n - `ids`: search for items with those ids, works iff single value passed to `models`\n - `display_type`: search for cards/models with specific display types\n - `has_temporal_dimensions`: set to true to search for cards with temporal dimensions only\n\n Note that not all item types support all filters, and the results will include only models that support the provided filters. For example:\n - The `created-by` filter supports dashboards, models, actions, and cards.\n - The `verified` filter supports models and cards.\n\n A search query that has both filters applied will only return models and cards.", "parameters" : [ { "in" : "query", "name" : "q", @@ -12209,6 +19804,24 @@ "minimum" : 1 } } + }, { + "in" : "query", + "name" : "display_type", + "required" : false, + "schema" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, { + "in" : "query", + "name" : "has_temporal_dimensions", + "required" : false, + "schema" : { + "type" : "boolean" + } }, { "in" : "query", "name" : "last_edited_at", @@ -12294,6 +19907,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12302,6 +19926,17 @@ "summary" : "POST /api/search/force-reindex", "description" : "This will trigger an immediate reindexing, if we are using search index.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12310,6 +19945,17 @@ "summary" : "POST /api/search/re-init", "description" : "This will blow away any search indexes, re-create, and re-populate them.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12331,6 +19977,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] }, "put" : { @@ -12350,6 +20007,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12358,6 +20026,17 @@ "summary" : "POST /api/segment/", "description" : "Create a new `Segment`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12393,6 +20072,17 @@ "summary" : "GET /api/segment/", "description" : "Fetch *all* `Segments`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12410,6 +20100,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] }, "put" : { @@ -12425,6 +20126,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12487,6 +20199,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12504,6 +20227,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12512,6 +20246,17 @@ "summary" : "POST /api/session/", "description" : "Login.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12538,6 +20283,17 @@ "summary" : "DELETE /api/session/", "description" : "Logout.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12546,6 +20302,17 @@ "summary" : "POST /api/session/forgot_password", "description" : "Send a reset email when user has forgotten their password.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12570,6 +20337,17 @@ "summary" : "POST /api/session/google_auth", "description" : "Login with Google Auth.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12594,6 +20372,17 @@ "summary" : "POST /api/session/password-check", "description" : "Endpoint that checks if the supplied password meets the currently configured password complexity rules.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12626,6 +20415,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12634,6 +20434,17 @@ "summary" : "GET /api/session/properties", "description" : "Get all properties and their values. These are the specific `Settings` that are readable by the current user, or are\n public if no user is logged in.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12642,6 +20453,17 @@ "summary" : "POST /api/session/reset_password", "description" : "Reset password with a reset token.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12670,12 +20492,34 @@ "summary" : "GET /api/setting/", "description" : "Get all `Settings` and their values. You must be a superuser or have `setting` permission to do this.\n For non-superusers, a list of visible settings and values can be retrieved using the /api/session/properties endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setting" ] }, "put" : { "summary" : "PUT /api/setting/", "description" : "Update multiple `Settings` values. If called by a non-superuser, only user-local settings can be updated.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12701,6 +20545,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setting" ] }, "put" : { @@ -12714,6 +20569,30 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "value" : { } + }, + "required" : [ "value" ] + } + } + } + }, "tags" : [ "/api/setting" ] } }, @@ -12722,6 +20601,17 @@ "summary" : "POST /api/setup/", "description" : "Special endpoint for creating the first user during setup. This endpoint both creates the user AND logs them in and\n returns a session ID. This endpoint can also be used to add a database, create and invite a second admin, and/or\n set specific settings from the setup flow.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12801,6 +20691,17 @@ "summary" : "GET /api/setup/user_defaults", "description" : "Returns object containing default user details for initial setup, if configured,\n and if the provided token value matches the token in the configuration value.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setup" ] } }, @@ -12809,6 +20710,17 @@ "summary" : "POST /api/slack/bug-report", "description" : "Send diagnostic information to the configured Slack channels.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12832,6 +20744,17 @@ "summary" : "GET /api/slack/manifest", "description" : "Returns the YAML manifest file that should be used to bootstrap new Slack apps", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/slack" ] } }, @@ -12840,6 +20763,17 @@ "summary" : "PUT /api/slack/settings", "description" : "Update Slack related settings. You must be a superuser to do this. Also updates the slack-cache.\n There are 3 cases where we alter the slack channel/user cache:\n 1. falsy token -> clear\n 2. invalid token -> clear\n 3. truthy, valid token -> refresh ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12866,12 +20800,34 @@ "summary" : "GET /api/table/", "description" : "Get all `Tables`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] }, "put" : { "summary" : "PUT /api/table/", "description" : "Update all `Table` in `ids`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12932,6 +20888,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -12949,6 +20916,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -12973,6 +20951,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] }, "put" : { @@ -12988,6 +20977,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13043,6 +21043,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13082,6 +21093,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13099,6 +21121,30 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:success -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "success" : { + "const" : true + } + }, + "required" : [ "success" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13130,6 +21176,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13171,6 +21228,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13188,6 +21256,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13205,6 +21284,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13222,104 +21312,413 @@ "required" : [ "filename", "tempfile" ] } }, - "required" : [ "file" ] + "required" : [ "file" ] + } + } + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{id}/rescan_values" : { + "post" : { + "summary" : "POST /api/table/{id}/rescan_values", + "description" : "Manually trigger an update for the FieldValues for the Fields belonging to this Table. Only applies to Fields that\n are eligible for FieldValues.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{id}/sync_schema" : { + "post" : { + "summary" : "POST /api/table/{id}/sync_schema", + "description" : "Trigger a manual update of the schema metadata for this `Table`.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{table-id}/data" : { + "get" : { + "summary" : "GET /api/table/{table-id}/data", + "description" : "Get the data for the given table", + "parameters" : [ { + "in" : "path", + "name" : "table-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/task/" : { + "get" : { + "summary" : "GET /api/task/", + "description" : "Fetch a list of recent tasks stored as Task History", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/info" : { + "get" : { + "summary" : "GET /api/task/info", + "description" : "Return raw data about all scheduled tasks (i.e., Quartz Jobs and Triggers).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/unique-tasks" : { + "get" : { + "summary" : "GET /api/task/unique-tasks", + "description" : "Returns possibly empty vector of unique task names in alphabetical order. It is expected that number of unique\n tasks is small, hence no need for pagination. If that changes this endpoint and function that powers it should\n reflect that.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/{id}" : { + "get" : { + "summary" : "GET /api/task/{id}", + "description" : "Get `TaskHistory` entry with ID.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/testing/echo" : { + "post" : { + "summary" : "POST /api/testing/echo", + "description" : "Simple echo hander. Fails when you POST with `?fail=true`.", + "parameters" : [ { + "in" : "query", + "name" : "fail", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + }, + "get" : { + "summary" : "GET /api/testing/echo", + "description" : "Simple echo hander. Fails when you GET with `?fail=true`.", + "parameters" : [ { + "in" : "query", + "name" : "fail", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "body", + "required" : true, + "schema" : { + "type" : "string" + }, + "description" : "value must be a valid JSON string." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + } + }, + "/api/testing/mark-stale" : { + "post" : { + "summary" : "POST /api/testing/mark-stale", + "description" : "Mark the card or dashboard as stale", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "date-str" : { + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "model" : { + "type" : "string" + } + }, + "required" : [ "id", "model" ] } } } }, - "tags" : [ "/api/table" ] + "tags" : [ "/api/testing" ] } }, - "/api/table/{id}/rescan_values" : { + "/api/testing/refresh-caches" : { "post" : { - "summary" : "POST /api/table/{id}/rescan_values", - "description" : "Manually trigger an update for the FieldValues for the Fields belonging to this Table. Only applies to Fields that\n are eligible for FieldValues.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 + "summary" : "POST /api/testing/refresh-caches", + "description" : "Manually triggers the cache refresh task, if Enterprise code is available.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, - "description" : "value must be an integer greater than zero." - } ], - "tags" : [ "/api/table" ] + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/table/{id}/sync_schema" : { + "/api/testing/restore/{name}" : { "post" : { - "summary" : "POST /api/table/{id}/sync_schema", - "description" : "Trigger a manual update of the schema metadata for this `Table`.", + "summary" : "POST /api/testing/restore/{name}", + "description" : "Restore a database snapshot for testing purposes.", "parameters" : [ { "in" : "path", - "name" : "id", + "name" : "name", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "type" : "string", + "minLength" : 1 + } } ], - "tags" : [ "/api/table" ] - } - }, - "/api/table/{table-id}/data" : { - "get" : { - "summary" : "GET /api/table/{table-id}/data", - "description" : "Get the data for the given table", - "parameters" : [ { - "in" : "path", - "name" : "table-id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 + "responses" : { + "2XX" : { + "description" : "Successful response" }, - "description" : "value must be an integer greater than zero." - } ], - "tags" : [ "/api/table" ] - } - }, - "/api/task/" : { - "get" : { - "summary" : "GET /api/task/", - "description" : "Fetch a list of recent tasks stored as Task History", - "parameters" : [ ], - "tags" : [ "/api/task" ] - } - }, - "/api/task/info" : { - "get" : { - "summary" : "GET /api/task/info", - "description" : "Return raw data about all scheduled tasks (i.e., Quartz Jobs and Triggers).", - "parameters" : [ ], - "tags" : [ "/api/task" ] + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/task/unique-tasks" : { - "get" : { - "summary" : "GET /api/task/unique-tasks", - "description" : "Returns possibly empty vector of unique task names in alphabetical order. It is expected that number of unique\n tasks is small, hence no need for pagination. If that changes this endpoint and function that powers it should\n reflect that.", + "/api/testing/set-time" : { + "post" : { + "summary" : "POST /api/testing/set-time", + "description" : "Make java-time see world at exact time.", "parameters" : [ ], - "tags" : [ "/api/task" ] + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "add-ms" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "time" : { + "description" : "value must be a valid date string", + "type" : "string" + } + } + } + } + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/task/{id}" : { - "get" : { - "summary" : "GET /api/task/{id}", - "description" : "Get `TaskHistory` entry with ID.", + "/api/testing/snapshot/{name}" : { + "post" : { + "summary" : "POST /api/testing/snapshot/{name}", + "description" : "Snapshot the database for testing purposes.", "parameters" : [ { "in" : "path", - "name" : "id", + "name" : "name", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "type" : "string", + "minLength" : 1 + } } ], - "tags" : [ "/api/task" ] + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + } + }, + "/api/testing/stats" : { + "post" : { + "summary" : "POST /api/testing/stats", + "description" : "Triggers a send of instance usage stats", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, "/api/tiles/{card-id}/{zoom}/{x}/{y}/{lat-field}/{lon-field}" : { @@ -13382,6 +21781,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13463,6 +21873,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13479,6 +21900,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13487,6 +21919,17 @@ "summary" : "POST /api/timeline-event/", "description" : "Create a new [[TimelineEvent]].", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13554,6 +21997,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline-event" ] }, "put" : { @@ -13569,6 +22023,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13624,6 +22089,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline-event" ] } }, @@ -13632,6 +22108,24 @@ "summary" : "POST /api/timeline/", "description" : "Create a new [[Timeline]].", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13687,6 +22181,27 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "sequence of map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13710,6 +22225,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13742,6 +22268,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13790,6 +22327,24 @@ }, "description" : "value must be a valid date string" } ], + "responses" : { + "2XX" : { + "description" : "map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] }, "put" : { @@ -13805,6 +22360,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13853,6 +22419,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13861,6 +22438,17 @@ "summary" : "POST /api/upload/csv", "description" : "Create a table and model populated with the values from the attached CSV. Returns the model ID if successful.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13903,6 +22491,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] } }, @@ -13927,6 +22526,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13964,12 +22574,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] }, "delete" : { "summary" : "DELETE /api/user-key-value/namespace/{namespace}/key/{key}", "description" : "Deletes a KV-pair for the user", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] } }, @@ -14009,12 +22641,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] }, "post" : { "summary" : "POST /api/user/", "description" : "Create a new `User`, return a 400 if the email address is already taken", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14058,6 +22712,17 @@ "summary" : "GET /api/user/current", "description" : "Fetch the current `User`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14066,6 +22731,17 @@ "summary" : "GET /api/user/recipients", "description" : "Fetch a list of `Users`. Returns only active users. Meant for non-admins unlike GET /api/user.\n\n - If user-visibility is :all or the user is an admin, include all users.\n - If user-visibility is :group, include only users in the same group (excluding the all users group).\n - If user-visibility is :none or the user is sandboxed, include only themselves.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14083,6 +22759,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] }, "put" : { @@ -14098,6 +22785,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14158,6 +22856,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14175,6 +22884,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14192,6 +22912,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14225,6 +22956,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14233,6 +22975,17 @@ "summary" : "GET /api/util/random_token", "description" : "Return a cryptographically secure random 32-byte token, encoded as a hexadecimal string.\n Intended for use when creating a value for `embedding-secret-key`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/util" ] } } diff --git a/_docs/master/configuring-metabase/appearance.md b/_docs/master/configuring-metabase/appearance.md index 34c9694a40..2cf23de98e 100644 --- a/_docs/master/configuring-metabase/appearance.md +++ b/_docs/master/configuring-metabase/appearance.md @@ -176,4 +176,4 @@ Metabase will display this illustration when searches don't return any results. - [Customer-facing analytics](/learn/metabase-basics/embedding). - [Embedding introduction](../embedding/start). -- [Brand your Metabase](/learn/metabase-basics/embedding/brand). +- [Brand your Metabase](/docs/latest/configuring-metabase/appearance). diff --git a/_docs/master/configuring-metabase/localization.md b/_docs/master/configuring-metabase/localization.md index 711cf5adca..cce9f05d01 100644 --- a/_docs/master/configuring-metabase/localization.md +++ b/_docs/master/configuring-metabase/localization.md @@ -13,11 +13,15 @@ redirect_from: # Languages and localization -The **Localization** settings allow you to set global defaults for your Metabase instance. You can find **Localization** under **Admin settings** > **Settings**. +Admins can update the localization settings for the instance: -## Default language +1. Click on the **gear** icon in the upper right. +2. Click **Admin settings**. +3. In the **Settings** tab, click on **Localization** in the left sidebar. -Here you can set the default language (also called the "instance language") across your Metabase UI, system [emails](./email), [dashboard subscriptions](../dashboards/subscriptions), and [alerts](../questions/alerts). People can pick a different language from their own [account settings](../people-and-groups/account-settings). +These localization settings allow you to set global language and formatting defaults for dates, times, numbers, and currencies. + +You can also override these localization options for specific fields or questions. For more info, see [Formatting](../data-modeling/formatting). ## Supported languages @@ -68,7 +72,9 @@ The locale codes are relevant for setting the language in [static embeds](../emb ## Translations -Our community contributes to Metabase translations on our [Crowdin project](https://crowdin.com/project/metabase-i18n). If you'd like to help make Metabase available in a language you're fluent in, we'd love your help! +Our community contributes to Metabase translations on our [Crowdin project](https://crowdin.com/project/metabase-i18n). + +If you'd like to help make Metabase available in a language you're fluent in, we'd love your help! For a new language to be added to Metabase, it must reach 100%. Once it does, we add it in the next major or minor release of Metabase. All _existing_ languages in Metabase _must stay at 100%_ to continue being included in the next _major_ version of Metabase. This rule ensures that no one encounters a confusing mishmash of English and another language when using Metabase. @@ -76,7 +82,21 @@ We understand that this is a high bar, so we commit to making sure that before e Note that while we only remove languages in major releases, we are happy to add them back for minor releases, so it's always a good time to jump in and start translating. -## Report timezone +### Contributing to translations for Metabase + +If you'd like to help make Metabase available in a language you're fluent in, we'd love your help! Check out our [Crowdin project](https://crowdin.com/project/metabase-i18n). + +## Instance settings + +### Instance language + +Here you can set the default language (also called the "instance language") across your Metabase UI, system [emails](./email), [dashboard subscriptions](../dashboards/subscriptions), and [alerts](../questions/alerts). + +People can override these settings in their personal [account settings](../people-and-groups/account-settings). + +Some translations are created by the Metabase community, and might not be perfect. + +### Report timezone Use **report timezone** to set a default display time zone for dates and times in Metabase. The report timezone setting is a display setting only, so changing the report timezone won't affect the time zone of any data in your database. @@ -99,29 +119,27 @@ Report timezone is only supported for the following databases: - Redshift - Vertica -## First day of the week - -If you need to, you can change the first day of the week for your instance (the default is Sunday). Setting the first day of the week affects things like grouping by week and filtering in questions built using the [query builder](../questions/query-builder/editor). This setting doesn't affect [SQL queries](../questions/native-editor/writing-sql). +### First day of the week -## Localization options +If you need to, you can change the first day of the week for your instance (the default is Sunday). -**Localization options** allow you to set global default display formats for dates, times, numbers, and currencies. +Setting the first day of the week affects how the [query builder](../questions/query-builder/editor) filters or groups by week. People can, however, use the `week` function to override this default when filtering or grouping by week of year. See [using a different first week of the year](../questions/query-builder/expressions/week#using-a-different-first-week-of-the-year). -You can also override these localization options for specific fields or questions. For more info, see [Formatting](../data-modeling/formatting). +This setting doesn't affect [SQL queries](../questions/native-editor/writing-sql). -### Dates and times +## Dates and times - **Date style:** the way dates should be displayed in tables, axis labels, and tooltips. -- **Date separators:** you can choose between slashes (`2022/12/14`), dashes (`2022-12-14`), and dots (`2022.12.14.`). +- **Date separators:** you can choose between slashes (`2022/12/14`), dashes (`2022-12-14`), and dots (`2022.12.14`). - **Abbreviate names of days and months:** whenever a date is displayed with the day of the week and/or the month written out, turning this setting on will display e.g. "January" as "Jan" or "Monday" as "Mon". - **Time style:** choose to display the time using either a 12 or 24-hour clock (e.g., 3:00 PM or 15:00). -### Numbers +## Numbers - **Separator style:** some people use commas to separate thousands places, and others use periods. Here's where you can indicate which camp you belong to. -### Currency +## Currency - **Unit of currency:** if you do most of your business in a particular currency, you can specify that here. - **Currency label style:** whether you want to have your currencies labeled with a symbol, a code (like "USD"), or its full name. -- **Where to display the unit of currency:** this pertains specifically to tables, and lets you choose if you want the currency labels to appear only in the column heading, or next to each value in the column. +- **Where to display the unit of currency:** this pertains specifically to tables, and lets you choose whether you want the currency labels to appear only in the column heading, or next to each value in the column. diff --git a/_docs/master/configuring-metabase/setting-up-metabase.md b/_docs/master/configuring-metabase/setting-up-metabase.md index 3bb6c7a348..8eae745476 100644 --- a/_docs/master/configuring-metabase/setting-up-metabase.md +++ b/_docs/master/configuring-metabase/setting-up-metabase.md @@ -43,7 +43,7 @@ Don't worry about picking the wrong option. If you say you're interested in embe ## Gathering your database info -At this point you’ll need to gather some information about the database you want to use with Metabase. We won’t be able to connect to your database without it, but you’d like to deal with all of this later, that’s okay: just click **I’ll add my data later**. Metabase comes with a [Sample Database](/glossary/sample_database) that you can play around with to get a feel for how Metabase works. +At this point you’ll need to gather some information about the database you want to use with Metabase. We won’t be able to connect to your database without it, but you’d like to deal with all of this later, that’s okay: just click **I’ll add my data later**. Metabase comes with a [Sample Database](/glossary/sample-database) that you can play around with to get a feel for how Metabase works. If you’re ready to connect, here’s what you’ll need: diff --git a/_docs/master/dashboards/filters.md b/_docs/master/dashboards/filters.md index 6407c4c95d..8f4412d64b 100644 --- a/_docs/master/dashboards/filters.md +++ b/_docs/master/dashboards/filters.md @@ -16,30 +16,15 @@ redirect_from: ![Dashboard Filters](./images/filters.png) -Have you ever found yourself in a situation where it seems like you need to create nearly identical copies of the same dashboard, with just one different variable? Maybe you have an Earnings dashboard, but you want to see the data for each city your business is in, or maybe you have a KPI dashboard that you want to see broken out by month. +Instead of creating duplicate dashboards to show different cuts of the same data (like a different dashboard for each quarter), you can add filter or parameter widgets to let people change _what_ data is displayed (filter the data), or _how_ its displayed (parameterize the data). -Instead of creating duplicate dashboards, you can add filter or parameter widgets to let people change variables for cards on a dashboard. +## Filter and parameter widgets -## Adding a filter or parameter - -![Add a Filter](./images/add-filter.png) - -- Click the **pencil icon** to enter dashboard editing mode. -- Click the **filter icon** that appears in the top-right to add a filter. -- Select a [filter type](#filter-and-parameter-types) -- [Connect your filter or parameter widget to dashboard cards](#connecting-a-filter-or-parameter-widget-to-dashboard-cards) to one or more dashboard cards on any or all tabs. -- [Configure your filter](#editing-a-filter) -- **Save** your changes. - -Metabase will display the filter only if the filter is connected to a card on the current dashboard tab. - -## Filter and parameter types - -The type of filter or parameter widget you choose determines how the widget works, including which fields you'll be able to filter your cards by. +There are two basic types of widgets you can add. The type of filter or parameter widget you choose determines how the widget works, including which fields you'll can connect to the widget. ### Filter widgets -**Filters** determine what data to show. For example, a date filter might show only data from the last 30 days, or a category filter might show only specific product categories. +**Filters** determine _what_ data to show. For example, a date filter might show only data from the last 30 days, or a category filter might show only specific product categories. - [Date picker](#date-picker-filters) - [Location](#location-filters) @@ -50,13 +35,45 @@ The type of filter or parameter widget you choose determines how the widget work ### Parameter widgets - **Parameters** determine how to show the data. The time grouping parameter, for example, changes the granularity of time-based visualizations (like showing data by month instead of by day) without removing any data points. + **Parameters** determine _how_ to show the data. The time grouping parameter, for example, changes the granularity of time-based visualizations (like showing data by month instead of by day) without removing any data points. - [Time grouping](#time-grouping-parameter) +## Adding a filter or parameter widget + +![Add a Filter](./images/add-filter.png) + +1. Click the **pencil icon** to enter dashboard editing mode. +2. You can add a filter or parameter widget to: + + - **The whole dashboard**. You'll need to connect these dashboard-level filters to individual cards. Metabase will only display dashboard-level widgets if they're connected to a card on the current tab. + - **Heading cards**. Not text cards, only [heading cards](./introduction#adding-headings-or-descriptions-with-text-cards). Can only be connected to cards on the current tab. + - **Question cards**. Can only be connected to cards on the current tab. + + Go to where you want to add a filter and click the **filter icon**. +3. Select a [filter type](#filter-and-parameter-widgets). +4. [Connect your filter or parameter widget to one or more dashboard cards](#connecting-a-filter-or-parameter-widget-to-dashboard-cards). Only dashboard-level widgets can be connected to cards on multiple tabs. +5. [Configure your filter](#editing-a-filter). +6. **Save** your changes. + +If the filter isn't connected any of the cards on the current tab, Metabase won't display the filter. + +### When to add a widget to a heading or card + +These are just rules of thumb to keep the user experience predictable. Do whatever works for your use case. + +By default, you should add widgets to the dashboard itself. + +If, however, your dashboard grows larger, and it doesn't make sense to break the dashboard up into multiple dashboards, you can add widgets to headings and cards so people can filter in place as they scroll through sections. In these cases, you should scope the effects of a heading widget to the section immediately below. Filters on cards should generally only update the card itself. + +If you want tab-specific widgets, you could either: + +- Add them to the dashboard itself, but only connect the widget to cards on a specific tab. +- Use a heading filter. + ## Date picker filters -When picking a Time filter, Metabase will prompt you to pick a specific type of date picker widget: +When picking a Date picker filter, Metabase will prompt you to pick an operator: - Month and Year - Quarter and Year @@ -65,19 +82,24 @@ When picking a Time filter, Metabase will prompt you to pick a specific type of - Relative Date - All Options -Single Date and Date Range will provide a calendar widget, while the other options all provide slightly different dropdown interfaces for picking values. To get a widget that's just like the time filter in the query builder, choose All options. +Single Date and Date Range will provide a calendar widget, while the other options all provide slightly different dropdown interfaces for picking values. To get a widget that's just like the date picker in the query builder, choose All options. + +### Issues with connecting to a date variable + +If you get a message like "A date variable in this card can only be connectedd to a time type with the single date option", you can handle it in a couple of ways. + +- **If you want a date picker where people can select multiple dates**, you'll need to change the variable in your SQL code to a [field filter](../questions/native-editor/field-filters). +- **If you want the filter widget to just take a single date**, you'll need to change the dashboard filter widget's type to "Single date". ## Time grouping parameter ![Time grouping](./images/time-grouping.png) -You can add a time grouping widget to a dashboard to change how charts are grouped by time. For example, you may want to look at the time series charts grouped by month by default, but give people the option to view the results by other groupings: by week, by quarter, and so on. - -> Time grouping parameter widget can only be connected to questions built with the [graphical query builder](../questions/query-builder/editor). +You can add a time grouping widget to a dashboard to change how charts are grouped by time. This widget won't filter the data; it'll change how Metabase aggregates the data. For example, you may want to look at the time series charts grouped by month by default, but give people the option to view the same results by other groupings: by week, by quarter, and so on. This widget doesn't filter data in the charts; the widget just changes the time granularity for any cards that have a datetime field connected to the widget. -You can group by: +Grouping options include: - Minute (or minute of hour) - Hour (or hour of day) @@ -87,19 +109,32 @@ You can group by: - Quarter (or quarter of year) - Year +To connect a time grouping widget to a SQL question, you'll need to insert time grouping parameters in your code. See [time grouping parameters](../questions/native-editor/time-grouping-parameters). + ## Location filters -There are four types of Location filters to choose from: +There are four types of Location filters to choose from. - City - State - ZIP or Postal Code - Country +Additionally, you can select an operator for the location filter: + +- **Is**. Select one or more values from a list or search box. Use **Is** when you just want to plug a value into a variable. For multiple values, the card must be either a question built using the query builder, a native/SQL question using a [field filter](../questions/native-editor/field-filters), or a basic variable set to accept [multiple values](../questions/native-editor/basic-sql-parameters#basic-variable-that-allows-people-to-select-multiple-values). +- **Is not**. Exclude one or more specific values. +- **Contains**. Match values that contain the entered text. +- **Does not contain**. Filter out values that contain the entered text. +- **Starts with**. Match values that begin with the entered text. +- **Ends with**. Match values that end with the entered text. + ## ID filter The ID filter provides a simple input box where you can type the ID of a user, order, etc. +You can give people the option to pick one value or multiple values. + ## Number filter You can choose from: @@ -112,23 +147,27 @@ You can choose from: ## Text or category filter -A flexible filter type that will let you create either a dropdown menu or an input box to filter on any category field in your cards. Options include: +A flexible filter type that will let you create either a dropdown menu or an input box to filter on any text or category field in your cards. Options include: -- **Is**. Select one or more values from a list or search box. Use **Is** when you just want to plug a value into a variable. For multiple values, the card must be either a question built using the query builder, or a native/SQL question using a [field filter](../questions/native-editor/sql-parameters#the-field-filter-variable-type). +- **Is**. Select one or more values from a list or search box. Use **Is** when you just want to plug a value into a variable. For multiple values, the card must be a question built using the query builder, a native/SQL question using a [field filter](../questions/native-editor/field-filters), or a basic variable set to [multiple values](../questions/native-editor/basic-sql-parameters#basic-variable-that-allows-people-to-select-multiple-values). - **Is not**. Exclude one or more specific values. - **Contains**. Match values that contain the entered text. - **Does not contain**. Filter out values that contain the entered text. - **Starts with**. Match values that begin with the entered text. - **Ends with**. Match values that end with the entered text. +You can also select how people should filter on this column: + +- Dropdown list +- Search box +- Input box + ## Boolean filter A boolean filter allows people to filter data based on true/false values. ## Connecting a filter or parameter widget to dashboard cards -Dashboard widgets apply across all [dashboard tabs](./introduction#dashboard-tabs), though they'll only be displayed when a tab has cards connected to the widget. - For each widget that you add, you'll need to tell Metabase which column the filter should update for each card. Click on a card's dropdown menu to select the field that you want the widget to filter on. @@ -137,6 +176,11 @@ Here we've wired up a Text filter to the "Event types" card, telling Metabase th ![Wiring up a dashboard filter to a card](./images/wiring-cards.png) +Which cards you can connect a filter or parameter widget to depends on: + +- Whether the card has a relevant field (i.e., the field the widget is filtering). +- Where the widget is located: on the dashboard, heading card, or question card. Only dashboard widgets can be connected to cards across all [dashboard tabs](./introduction#dashboard-tabs). Widgets on heading and question cards are restricted to the cards on their respective tabs. + ## Auto-connecting filters to cards If there are other cards that also have the field you select, Metabase will offer to automatically connect the filter to those cards too (including to relevant cards on other tabs). If you later add a card with the selected field, Metabase will also try to connect that filter to the new card. @@ -145,9 +189,9 @@ To undo this auto-connecting of cards, click on the toast that pops up when Meta ## Filtering dashboards with native/SQL questions -If you're trying to connect a filter to a card with a native/SQL questions, you'll need to [add a variable or field filter to your query](../questions/native-editor/sql-parameters). For an in-depth article, check out [Adding filters to dashboards with SQL questions](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/filters). +For filters, you'll need to [add a variable or field filter to your query](../questions/native-editor/sql-parameters). -You can't connect a time grouping parameter widget to a card with a SQL question. +For parameters, check out [Time grouping parameters](../questions/native-editor/time-grouping-parameters). ## Wiring up dashboard filters to text cards @@ -201,8 +245,8 @@ A list of all of the possible values in a column. People can use checkboxes to s If you're not seeing the **Dropdown list** option, and your dashboard filter is based on a column from a: -- Table or GUI model: an admin will need to [enable the dropdown widget](../data-modeling/metadata-editing#changing-a-search-box-filter-to-a-dropdown-filter) for that column from Metabase's **Admin settings**. -- SQL model: go to your [model's metadata settings](../data-modeling/models#add-metadata-to-columns-in-a-model), find your column, and set the **Database column this maps to**. +- Table or model built with the query builder: an admin will need to [enable the dropdown widget](../data-modeling/metadata-editing#changing-a-search-box-filter-to-a-dropdown-filter) for that column from Metabase's **Admin settings**. +- Model built with a SQL query: go to your [model's metadata settings](../data-modeling/models#add-metadata-to-columns-in-a-model), find your column, and set the **Database column this maps to**. #### Search box diff --git a/_docs/master/dashboards/linked-filters.md b/_docs/master/dashboards/linked-filters.md index 50e9dd50e5..4f15039e8e 100644 --- a/_docs/master/dashboards/linked-filters.md +++ b/_docs/master/dashboards/linked-filters.md @@ -63,7 +63,7 @@ Metabase uses database column metadata to populate values for linked filters, wh - You can't create linked filters on custom columns. -- Native/SQL questions must have a [field filter](../questions/native-editor/sql-parameters#the-field-filter-variable-type) variable in order to be linked. Basic SQL variables aren't connected to database columns, so they won't work for linked filters. +- Native/SQL questions must have a [field filter](../questions/native-editor/field-filters) variable in order to be linked. Basic SQL variables aren't connected to database columns, so they won't work for linked filters. - You can't link filters that use "Custom List" or "From another model or question" as their value's source. diff --git a/_docs/master/data-modeling/metadata-editing.md b/_docs/master/data-modeling/metadata-editing.md index 96b3befa07..9fc1a559b9 100644 --- a/_docs/master/data-modeling/metadata-editing.md +++ b/_docs/master/data-modeling/metadata-editing.md @@ -21,6 +21,8 @@ Metabase lets you add and edit metadata for your tables and columns. The **Table metadata settings only affect the way Metabase displays the data. None of the settings change the data in your database.** +Admins can grant access to these metadata settings to other groups. See [table metadata permissions](../permissions/data#manage-table-metadata-permissions). + ## Table settings _Admin settings > Table metadata > Database > Table_ @@ -31,17 +33,17 @@ You can search for tables, or use the tree navigation to find each of your conne To edit a table's display name or description in the table metadata tab, click into the box that contains the current table name or description and edit it. Changes will be saved automatically once you click out of the box. -Descriptions are displayed in Metabase's [data reference](../exploration-and-organization/data-model-reference) to help people find the right table for their use case. +Descriptions are displayed in Metabase's [data reference](../exploration-and-organization/data-model-reference) and tooltips when view the table. Decscriptions help people find the right table for their use case. ### Table sync options -Actions you can take to refresh the schema or field values. +Actions you can take to refresh the schema or field values. For more, check out [syncs and scans](../databases/sync-scan). #### Sync table schema If you've made changes to this table in the underlying database that aren't showing up in Metabase yet, re-syncing the table schema can fix that. -To update the values in your filter dropdown menus, refresh or reset the cached values. **Cache actions** include: +To update the values in your filter dropdown menus, refresh or reset the cached values. #### Scan field values @@ -49,7 +51,7 @@ Metabase uses these values to populate dropdown filters. You can also [scan valu #### Discard cached field values -Clears cached values and stops them from showing up in your [filter widgets](#filtering). +Clears cached values. Metabase will pull new values for display in your [filter widgets](#filtering). ### Table sorting @@ -98,7 +100,7 @@ Click the preview button to see sample data from that field. _Admin settings > Table Metadata > Database > Table > Field_ -To scan or discard field values for a specific field, click on **Field values**. +To scan or discard field values for a specific field, click on the **Field values** button. Metabase uses these values to populate dropdown menus in filter widgets. (To be clear, values aren't actually dropped from your database.) ## Field data @@ -156,7 +158,7 @@ _Admin settings > Table Metadata > Database > Table > Field_ ### Semantic type -You can change the [semantic type](../data-modeling/semantic-types) to give people more context. For example, you could set an Integer as a "Score" so people have a better idea what those integers indicate. +You can change the [semantic type](../data-modeling/semantic-types) to give people more context and enable additional functionality, such as displaying text as an image (if the text is an image URL. Another example: you could set an Integer as a "Score" so people have a better idea what those integers indicate. The semantic types you can choose from depend on the data type. If none of the options describe the values in the column, you can set this setting to "No semantic type". @@ -169,19 +171,21 @@ _Admin settings > Table Metadata > Database > Table > Field_ ### Field visibility - **Everywhere**: By default, users can see all of the columns in a table. -- **Only in detail views**: This will hide lengthy text from question results. This setting is applied by default if a column's values have an average length of more than 50 characters. For example, you could use this setting on a column like "Customer Comments" if you already have a column for "Customer Rating". +- **Only in detail views**: The detail view is the view you seen when you expand a single row in a table. This will hide lengthy text from question results. This setting is applied by default if a column's values have an average length of more than 50 characters. For example, you could use this setting on a column like "Customer Comments" if you already have a column for "Customer Rating". - **Do not include**: Columns won't show up in the query builder or data reference. You can set this option on sensitive columns (such as PII) or irrelevant columns. But this visibility option is a simple omit/hide option; **it's not a permissions feature**. These columns are still accessible for people with native query privileges; they can write `SELECT hidden_column FROM table` or `SELECT * FROM table` in the [SQL editor](../questions/native-editor/writing-sql) and they'll be able to view these fields and their values. To restrict what data people can view and query, see [data permissions](../permissions/data). ### Filtering -The **Filtering** setting changes a column's [filter widget](../dashboards/filters). Options include: +The **Filtering** setting changes a column's default [filter widget](../dashboards/filters). Options include: - **Search box**: Display a search box and suggest autocompletions for values in that column that match the search term(s). - **A list of all values**: Display a search box, as well as a dropdown menu with checkboxes for values. If the number of distinct values exceeds 1000, however, Metabase will instead display a search box. See [Changing a search box filter to a dropdown filter](#changing-a-search-box-filter-to-a-dropdown-filter). - **Plain input box**: Display a search box, but don't suggest autocompletions. +The settings here will also affect dashboard filters. For example, if you set this to plain input box, you won't be able to set up a dashboard filter that has a dropdown menu. See [dropdown list](../dashboards/filters#dropdown-list). + #### Changing a search box filter to a dropdown filter The dropdown filter widget can be finicky, because Metabase needs to run a [scan](../databases/sync-scan#how-database-scans-work) to get the list of values for the dropdown menu. If you're having trouble: @@ -195,7 +199,7 @@ If you have columns with more than 1,000 distinct values, or columns with text-h ### Display values -On numeric and foreign key types, this setting lets you map columns to display different values. +You can map another column connected by a foreign key relationship, like mapping a `Product_ID` column to instead display the name of the product. #### Mapping values to foreign keys diff --git a/_docs/master/data-modeling/semantic-types.md b/_docs/master/data-modeling/semantic-types.md index 9e9d64e84d..07091af587 100644 --- a/_docs/master/data-modeling/semantic-types.md +++ b/_docs/master/data-modeling/semantic-types.md @@ -174,7 +174,7 @@ When you [X-ray](../exploration-and-organization/x-rays) a table, model, or enti ### Field Filters -Knowing what field types are and how they work is helpful when using [field filters](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/field-filters), as you can only create field filters for [certain field types](../questions/native-editor/sql-parameters#field-filter-compatible-types). +Knowing what field types are and how they work is helpful when using [field filters](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/field-filters), as you can only create field filters for [certain field types](../questions/native-editor/field-filters#when-to-use-a-field-filter-variable-vs-a-basic-variable). ### JSON unfolding diff --git a/_docs/master/databases/connecting.md b/_docs/master/databases/connecting.md index 27d2ea90e2..63f7f9f36d 100644 --- a/_docs/master/databases/connecting.md +++ b/_docs/master/databases/connecting.md @@ -76,7 +76,7 @@ Go to **Admin settings** > **Databases** > your database and click **Remove this ## Restoring the Sample Database -If you've deleted the Metabase [Sample Database](/glossary/sample_database), go to **Admin settings** > **Databases** and click **Bring the Sample Database back**. +If you've deleted the Metabase [Sample Database](/glossary/sample-database), go to **Admin settings** > **Databases** and click **Bring the Sample Database back**. ## Troubleshooting diff --git a/_docs/master/embedding/interactive-embedding.md b/_docs/master/embedding/interactive-embedding.md index e80ce4741e..c16dd02ef8 100644 --- a/_docs/master/embedding/interactive-embedding.md +++ b/_docs/master/embedding/interactive-embedding.md @@ -20,7 +20,7 @@ redirect_from: **Interactive embedding** is what you want if you want to offer [multi-tenant, self-service analytics](/learn/metabase-basics/embedding/multi-tenant-self-service-analytics). -Interactive embedding is the only type of embedding that integrates with your [permissions](../permissions/introduction) and [SSO](../people-and-groups/start#authentication) to give people the right level of access to [query](/glossary/query_builder) and [drill-down](/learn/metabase-basics/querying-and-dashboards/questions/drill-through) into your data. +Interactive embedding is the only type of embedding that integrates with your [permissions](../permissions/introduction) and [SSO](../people-and-groups/start#authentication) to give people the right level of access to [query](/glossary/query-builder) and [drill-down](/learn/metabase-basics/querying-and-dashboards/questions/drill-through) into your data. ## Interactive embedding demo diff --git a/_docs/master/embedding/introduction.md b/_docs/master/embedding/introduction.md index dbc020d74d..acd7fdd4f7 100644 --- a/_docs/master/embedding/introduction.md +++ b/_docs/master/embedding/introduction.md @@ -53,7 +53,7 @@ If you'd like to share your data with the good people of the internet, admins ca | Restrict data with [locked filters](./static-embedding-parameters#restricting-data-in-a-static-embed-with-locked-parameters) | ❌ | ❌ | ✅ | ❌ | | Restrict data with [sandboxes](../permissions/data-sandboxes) | ✅ | ✅ | ❌ | ❌ | | Use the [drill-through menu](/learn/metabase-basics/querying-and-dashboards/questions/drill-through) | ✅ | ✅ | ❌ | ❌ | -| Self-serve via [query builder](/glossary/query_builder) | ✅ | ✅ | ❌ | ❌ | +| Self-serve via [query builder](/glossary/query-builder) | ✅ | ✅ | ❌ | ❌ | | View usage of embeds with [usage analytics](../usage-and-performance-tools/usage-analytics) | ✅ | ✅ | ❌ | ❌ | | [Actions on dashboards](../dashboards/actions) | ✅ | ✅ | ❌ | ❌ | | Embed individual Metabase components | ✅ | ❌ | ❌ | ❌ | diff --git a/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html b/_docs/master/embedding/sdk/api/BaseSdkQuestionProps.html similarity index 66% rename from _docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html rename to _docs/master/embedding/sdk/api/BaseSdkQuestionProps.html index 70e4b609e9..eb917617bd 100644 --- a/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html +++ b/_docs/master/embedding/sdk/api/BaseSdkQuestionProps.html @@ -4,12 +4,12 @@ show_category_breadcrumb: true show_title_breadcrumb: true category: Embedding -title: BaseInteractiveQuestionProps -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/BaseInteractiveQuestionProps.html' +title: BaseSdkQuestionProps +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/BaseSdkQuestionProps.html' layout: docs-api --- -BaseInteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

Interface BaseInteractiveQuestionProps

interface BaseInteractiveQuestionProps {
    children?: ReactNode;
    entityTypes?: EmbeddingEntityType[];
    initialSqlParameters?: SqlParameterValues;
    isSaveEnabled?: boolean;
    onBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>;
    onRun?: (question: undefined | MetabaseQuestion) => void;
    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void;
    plugins?: MetabasePluginsConfig;
    questionId: null | SdkQuestionId;
    targetCollection?: SdkCollectionId;
    withDownloads?: boolean;
}
Index

Properties

children? +BaseSdkQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

Interface BaseSdkQuestionProps

interface BaseSdkQuestionProps {
    children?: ReactNode;
    entityTypes?: EmbeddingEntityType[];
    initialSqlParameters?: SqlParameterValues;
    isSaveEnabled?: boolean;
    onBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>;
    onRun?: (question: undefined | MetabaseQuestion) => void;
    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void;
    plugins?: MetabasePluginsConfig;
    questionId: null | SdkQuestionId;
    targetCollection?: SdkCollectionId;
    withDownloads?: boolean;
}
Index

Properties

children? entityTypes? initialSqlParameters? isSaveEnabled? diff --git a/_docs/master/embedding/sdk/api/CreateQuestion.html b/_docs/master/embedding/sdk/api/CreateQuestion.html index dd1d9a4f9b..e79feca847 100644 --- a/_docs/master/embedding/sdk/api/CreateQuestion.html +++ b/_docs/master/embedding/sdk/api/CreateQuestion.html @@ -9,13 +9,22 @@ layout: docs-api --- -CreateQuestion | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

Function CreateQuestion

  • Parameters

    • Optionalprops: CreateQuestionProps
      • OptionalentityTypes?: EmbeddingEntityType[]

        An array that specifies which entity types are available in the data picker

        +CreateQuestion | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Function CreateQuestion

        • Parameters

          • Optionalprops: CreateQuestionProps
            • OptionalclassName?: string

              A custom class name to be added to the root element.

              +
            • OptionalcomponentPlugins?: MetabasePluginsConfig

              Additional mapper function to override or add drill-down menu

              +
            • OptionalentityTypes?: EmbeddingEntityType[]

              An array that specifies which entity types are available in the data picker

              +
            • Optionalheight?: Height<string | number>

              A number or string specifying a CSS size value that specifies the height of the component

            • OptionalinitialSqlParameters?: SqlParameterValues

              Initial values for the SQL parameters.

            • OptionalisSaveEnabled?: boolean

              Whether to show the save button.

            • OptionalonBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>

              A callback function that triggers before saving. Only relevant when isSaveEnabled = true

              +
            • OptionalonNavigateBack?: () => void

              A callback function that triggers when a user clicks the back button.

            • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

              A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            • OptionalonSave?: (
                  question: MetabaseQuestion,
                  context: { dashboardTabId?: number; isNewQuestion: boolean },
              ) => void

              A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

              -
            • Optionalplugins?: MetabasePluginsConfig
            • OptionaltargetCollection?: SdkCollectionId

              The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

              +
            • Optionalplugins?: MetabasePluginsConfig
            • Optionalstyle?: CSSProperties

              A custom style object to be added to the root element.

              +
            • OptionaltargetCollection?: SdkCollectionId

              The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

              +
            • Optionaltitle?: SdkQuestionTitleProps

              Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

              +
            • Optionalwidth?: Width<string | number>

              A number or string specifying a CSS size value that specifies the width of the component

              +
            • OptionalwithChartTypeSelector?: boolean

              Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

            • OptionalwithDownloads?: boolean

              Enables the ability to download results in the interactive question.

              +
            • OptionalwithResetButton?: boolean

              Determines whether a reset button is displayed. Only relevant when using the default layout.

          Returns Element

          Use <InteractiveQuestion questionId="new" /> instead.

        diff --git a/_docs/master/embedding/sdk/api/CreateQuestionProps.html b/_docs/master/embedding/sdk/api/CreateQuestionProps.html index 162264812e..c3b9fb4804 100644 --- a/_docs/master/embedding/sdk/api/CreateQuestionProps.html +++ b/_docs/master/embedding/sdk/api/CreateQuestionProps.html @@ -9,21 +9,39 @@ layout: docs-api --- -CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Interface CreateQuestionProps

        interface CreateQuestionProps {
            entityTypes?: EmbeddingEntityType[];
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            targetCollection?: SdkCollectionId;
            withDownloads?: boolean;
        }
        Index

        Properties

        entityTypes? +CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Interface CreateQuestionProps

        interface CreateQuestionProps {
            className?: string;
            componentPlugins?: MetabasePluginsConfig;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onNavigateBack?: () => void;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        entityTypes?: EmbeddingEntityType[]

        An array that specifies which entity types are available in the data picker

        +withResetButton? +

        Properties

        className?: string

        A custom class name to be added to the root element.

        +
        componentPlugins?: MetabasePluginsConfig

        Additional mapper function to override or add drill-down menu

        +
        entityTypes?: EmbeddingEntityType[]

        An array that specifies which entity types are available in the data picker

        +
        height?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

        initialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        isSaveEnabled?: boolean

        Whether to show the save button.

        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

        +
        onNavigateBack?: () => void

        A callback function that triggers when a user clicks the back button.

        onRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        -
        targetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

        +

        A custom style object to be added to the root element.

        +
        targetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

        +

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        +
        width?: Width<string | number>

        A number or string specifying a CSS size value that specifies the width of the component

        +
        withChartTypeSelector?: boolean

        Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

        withDownloads?: boolean

        Enables the ability to download results in the interactive question.

        -

        +
withResetButton?: boolean

Determines whether a reset button is displayed. Only relevant when using the default layout.

+

diff --git a/_docs/master/embedding/sdk/api/EditableDashboard.html b/_docs/master/embedding/sdk/api/EditableDashboard.html index 43f5381000..bd76c55d96 100644 --- a/_docs/master/embedding/sdk/api/EditableDashboard.html +++ b/_docs/master/embedding/sdk/api/EditableDashboard.html @@ -20,7 +20,7 @@
  • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
  • -
  • OptionaldataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    +
  • OptionaldataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

  • OptionaldrillThroughQuestionHeight?: Height<string | number>

    Height of a question component when drilled from the dashboard to a question level.

  • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

    Props of a question component when drilled from the dashboard to a question level.

  • OptionalhiddenParameters?: string[]

    A list of parameters to hide. diff --git a/_docs/master/embedding/sdk/api/EditableDashboardProps.html b/_docs/master/embedding/sdk/api/EditableDashboardProps.html index 624a16cef9..0b4a818e9c 100644 --- a/_docs/master/embedding/sdk/api/EditableDashboardProps.html +++ b/_docs/master/embedding/sdk/api/EditableDashboardProps.html @@ -9,7 +9,7 @@ layout: docs-api --- -EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        className?: string;
        dashboardId: SdkDashboardId;
        dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: null | MetabaseDashboard) => void;
        onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withTitle?: boolean;
    }
    Index

    Properties

    className? +EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        className?: string;
        dashboardId: SdkDashboardId;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: null | MetabaseDashboard) => void;
        onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withTitle?: boolean;
    }
    Index
  • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
  • -
    dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    +
    dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    drillThroughQuestionHeight?: Height<string | number>

    Height of a question component when drilled from the dashboard to a question level.

    drillThroughQuestionProps?: DrillThroughQuestionProps

    Props of a question component when drilled from the dashboard to a question level.

    Type declaration

    Props for the drill-through question

    diff --git a/_docs/master/embedding/sdk/api/IconName.html b/_docs/master/embedding/sdk/api/IconName.html index 79e2c3249b..dc5d728476 100644 --- a/_docs/master/embedding/sdk/api/IconName.html +++ b/_docs/master/embedding/sdk/api/IconName.html @@ -9,4 +9,4 @@ layout: docs-api --- -IconName | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "model"
        | "table"
        | "question"
        | "collection"
        | "dashboard"
        | "add"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_row"
        | "add_to_dash"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "archive"
        | "area"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "bar"
        | "bell"
        | "birthday"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "burger"
        | "calendar"
        | "check"
        | "check_filled"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "compare"
        | "combine"
        | "connections"
        | "contract"
        | "copy"
        | "curved"
        | "database"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "ellipsis"
        | "embed"
        | "empty"
        | "enter_or_return"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel"
        | "funnel_outline"
        | "folder"
        | "folder_filled"
        | "gauge"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "globe"
        | "grabber"
        | "grid"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_filled"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "line"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "list"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "new_folder"
        | "notebook"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "progress"
        | "pulse"
        | "recents"
        | "revert"
        | "sankey"
        | "share"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "section"
        | "segment"
        | "shield"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "smartscalar"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "verified_filled"
        | "view_archive"
        | "warning"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "waterfall"
        | "webhook"
        | "10k"
        | "1m"
        | "zoom_in"
        | "zoom_out"
        | "scalar"
        | "cake"
        | "external"
        | "table_spaced"
        | "beaker"
        | "eye_filled"

    +IconName | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "model"
        | "table"
        | "question"
        | "collection"
        | "dashboard"
        | "revert"
        | "add"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_row"
        | "add_to_dash"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "archive"
        | "area"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "bar"
        | "bell"
        | "birthday"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "burger"
        | "calendar"
        | "check"
        | "check_filled"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "compare"
        | "combine"
        | "connections"
        | "contract"
        | "copy"
        | "curved"
        | "database"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "ellipsis"
        | "embed"
        | "empty"
        | "enter_or_return"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel"
        | "funnel_outline"
        | "folder"
        | "folder_filled"
        | "gauge"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "globe"
        | "grabber"
        | "grid"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_filled"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "line"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "list"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "new_folder"
        | "notebook"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "progress"
        | "pulse"
        | "recents"
        | "sankey"
        | "share"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "section"
        | "segment"
        | "shield"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "smartscalar"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "verified_filled"
        | "view_archive"
        | "warning"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "waterfall"
        | "webhook"
        | "10k"
        | "1m"
        | "zoom_in"
        | "zoom_out"
        | "scalar"
        | "cake"
        | "external"
        | "table_spaced"
        | "beaker"
        | "eye_filled"

    diff --git a/_docs/master/embedding/sdk/api/InteractiveDashboard.html b/_docs/master/embedding/sdk/api/InteractiveDashboard.html index 41e5061096..fe6812fef0 100644 --- a/_docs/master/embedding/sdk/api/InteractiveDashboard.html +++ b/_docs/master/embedding/sdk/api/InteractiveDashboard.html @@ -9,8 +9,8 @@ layout: docs-api --- -InteractiveDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Function InteractiveDashboard

    dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    +
    dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

    Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    drillThroughQuestionHeight?: Height<string | number>

    Height of a question component when drilled from the dashboard to a question level.

    drillThroughQuestionProps?: DrillThroughQuestionProps

    Props of a question component when drilled from the dashboard to a question level.

    Type declaration

    Props for the drill-through question

    diff --git a/_docs/master/embedding/sdk/api/InteractiveQuestion.html b/_docs/master/embedding/sdk/api/InteractiveQuestion.html deleted file mode 100644 index dc7989bff8..0000000000 --- a/_docs/master/embedding/sdk/api/InteractiveQuestion.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -version: master -has_magic_breadcrumbs: true -show_category_breadcrumb: true -show_title_breadcrumb: true -category: Embedding -title: InteractiveQuestion -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/InteractiveQuestion.html' -layout: docs-api ---- - -InteractiveQuestion | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Function InteractiveQuestion

    • A component that renders an interactive question.

      -

      Parameters

      • props: InteractiveQuestionProps
        • Optionalchildren?: ReactNode

          The children of the MetabaseProvider component.s

          -
        • OptionalclassName?: string

          A custom class name to be added to the root element.

          -
        • OptionalentityTypes?: EmbeddingEntityType[]

          An array that specifies which entity types are available in the data picker

          -
        • Optionalheight?: Height<string | number>

          A number or string specifying a CSS size value that specifies the height of the component

          -
        • OptionalinitialSqlParameters?: SqlParameterValues

          Initial values for the SQL parameters.

          -
        • OptionalisSaveEnabled?: boolean

          Whether to show the save button.

          -
        • OptionalonBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>

          A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          -
        • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

          A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

          -
        • OptionalonSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          -
        • Optionalplugins?: MetabasePluginsConfig
        • questionId: null | SdkQuestionId

          The ID of the question. -
          -This is either: -

          -
            -
          • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
          • -
          • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
          • -
          • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
          • -
          -
        • Optionalstyle?: CSSProperties

          A custom style object to be added to the root element.

          -
        • OptionaltargetCollection?: SdkCollectionId

          The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          -
        • Optionaltitle?: SdkQuestionTitleProps

          Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

          -
        • Optionalwidth?: Width<string | number>

          A number or string specifying a CSS size value that specifies the width of the component

          -
        • OptionalwithChartTypeSelector?: boolean

          Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

          -
        • OptionalwithDownloads?: boolean

          Enables the ability to download results in the interactive question.

          -
        • OptionalwithResetButton?: boolean

          Determines whether a reset button is displayed. Only relevant when using the default layout.

          -

      Returns null | Element

    Index

    InteractiveQuestion

    BackButton: (props: InteractiveQuestionBackButtonProps) => null | Element

    Type declaration

    Breakout: () => null | Element

    Type declaration

      • (): null | Element
      • Function

        A set of badges for managing data groupings (breakouts). -Uses question context for breakout functionality.

        -

        Returns null | Element

    BreakoutDropdown: (
        props: InteractiveQuestionBreakoutDropdownProps,
    ) => null | Element

    Type declaration

    ChartTypeDropdown: (props: MenuProps) => Element

    Type declaration

      • (props: MenuProps): Element
      • Function

        Dropdown for selecting the visualization type (bar chart, line chart, table, etc.). -Automatically updates to show recommended visualization types for the current data.

        -

        Parameters

        Returns Element

    ChartTypeSelector: (props: StackProps) => Element

    Type declaration

    DownloadWidget: (props: StackProps) => null | Element

    Type declaration

      • (props: StackProps): null | Element
      • Function

        Provides a UI widget for downloading data in different formats (CSV, XLSX, JSON, and PNG depending on the visualization).

        -

        Parameters

        Returns null | Element

    DownloadWidgetDropdown: (props: PopoverProps) => Element

    Type declaration

    Editor: (props: InteractiveQuestionEditorProps) => undefined | Element

    Type declaration

      • (props: InteractiveQuestionEditorProps): undefined | Element
      • Function

        Advanced query editor that provides full access to question configuration. -Includes filtering, aggregation, custom expressions, and joins.

        -

        Parameters

        • props: InteractiveQuestionEditorProps
          • OptionalhasVisualizeButton?: boolean
          • OptionalonApply?: () => void

            Callback function executed when changes are applied

            -

        Returns undefined | Element

    EditorButton: (
        props: InteractiveQuestionEditorButtonProps,
    ) => undefined | false | Element

    Type declaration

    Type declaration

    FilterDropdown: (
        props: InteractiveQuestionFilterDropdownProps,
    ) => null | Element

    Type declaration

    Notebook: (props: InteractiveQuestionEditorProps) => undefined | Element

    Type declaration

      • (props: InteractiveQuestionEditorProps): undefined | Element
      • Function

        Advanced query editor that provides full access to question configuration. -Includes filtering, aggregation, custom expressions, and joins.

        -

        Parameters

        • props: InteractiveQuestionEditorProps
          • OptionalhasVisualizeButton?: boolean
          • OptionalonApply?: () => void

            Callback function executed when changes are applied

            -

        Returns undefined | Element

    Use InteractiveQuestion.Editor instead

    -
    NotebookButton: (
        props: InteractiveQuestionEditorButtonProps,
    ) => undefined | false | Element

    Type declaration

    Use InteractiveQuestion.EditorButton instead

    -
    QuestionSettings: (props: StackProps) => null | Element

    Type declaration

      • (props: StackProps): null | Element
      • Function

        Settings panel for configuring visualization options like axes, colors, and formatting. -Uses question context for settings.

        -

        Parameters

        Returns null | Element

    QuestionSettingsDropdown: (
        props?: InteractiveQuestionQuestionSettingsDropdownProps,
    ) => Element

    Type declaration

    QuestionVisualization: (
        props: { className?: string; style?: CSSProperties } & {
            height?: Height<string | number>;
            width?: Width<string | number>;
        } & {},
    ) => Element

    Type declaration

      • (
            props: { className?: string; style?: CSSProperties } & {
                height?: Height<string | number>;
                width?: Width<string | number>;
            } & {},
        ): Element
      • Function

        The main visualization component that renders the question results as a chart, table, or other visualization type.

        -

        Parameters

        • props: { className?: string; style?: CSSProperties } & {
              height?: Height<string | number>;
              width?: Width<string | number>;
          } & {}
          • OptionalclassName?: string

            A custom class name to be added to the root element.

            -
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

            -
          • Optionalheight?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

            -
          • Optionalwidth?: Width<string | number>

            A number or string specifying a CSS size value that specifies the width of the component

            -

          Returns Element

      ResetButton: (props?: ButtonProps) => null | Element

      Type declaration

        • (props?: ButtonProps): null | Element
        • Function

          Button to reset question modifications. Only appears when there are unsaved changes to the question.

          -

          Parameters

          Returns null | Element

      Type declaration

      SaveQuestionForm: (
          props: InteractiveQuestionSaveQuestionFormProps,
      ) => null | Element

      Type declaration

      Summarize: () => Element

      Type declaration

        • (): Element
        • Function

          Interface for adding and managing data summaries (like counts, sums, averages). Displays as a set of badges. -Uses question context for summarization functionality.

          -

          Returns Element

      SummarizeDropdown: (props: InteractiveQuestionSummarizeDropdownProps) => Element

      Type declaration

      Title: (
          props: { className?: string; style?: CSSProperties },
      ) => undefined | Element

      Type declaration

        • (props: { className?: string; style?: CSSProperties }): undefined | Element
        • Function

          Displays a title based on the question's state. Shows:

          -
            -
          • The question's display name if it's saved
          • -
          • An auto-generated description for ad-hoc questions (non-native queries)
          • -
          • "New question" as fallback or for new/native queries
          • -
          -

          Parameters

          • props: { className?: string; style?: CSSProperties }
            • OptionalclassName?: string

              A custom class name to be added to the root element.

              -
            • Optionalstyle?: CSSProperties

              A custom style object to be added to the root element.

              -

          Returns undefined | Element

      other

      VisualizationButton: () => null | Element

      diff --git a/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html b/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html index ab3d118292..a1ccc4f197 100644 --- a/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html @@ -9,13 +9,14 @@ layout: docs-api --- -InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface InteractiveQuestionProps

      interface InteractiveQuestionProps {
          children?: ReactNode;
          className?: string;
          entityTypes?: EmbeddingEntityType[];
          height?: Height<string | number>;
          initialSqlParameters?: SqlParameterValues;
          isSaveEnabled?: boolean;
          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>;
          onRun?: (question: undefined | MetabaseQuestion) => void;
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void;
          plugins?: MetabasePluginsConfig;
          questionId: null | SdkQuestionId;
          style?: CSSProperties;
          targetCollection?: SdkCollectionId;
          title?: SdkQuestionTitleProps;
          width?: Width<string | number>;
          withChartTypeSelector?: boolean;
          withDownloads?: boolean;
          withResetButton?: boolean;
      }
      Index

      Properties

      children? -className? +InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface InteractiveQuestionProps

      interface InteractiveQuestionProps {
          className?: string;
          componentPlugins?: MetabasePluginsConfig;
          entityTypes?: EmbeddingEntityType[];
          height?: Height<string | number>;
          initialSqlParameters?: SqlParameterValues;
          isSaveEnabled?: boolean;
          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>;
          onNavigateBack?: () => void;
          onRun?: (question: undefined | MetabaseQuestion) => void;
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void;
          plugins?: MetabasePluginsConfig;
          questionId: null | SdkQuestionId;
          style?: CSSProperties;
          targetCollection?: SdkCollectionId;
          title?: SdkQuestionTitleProps;
          width?: Width<string | number>;
          withChartTypeSelector?: boolean;
          withDownloads?: boolean;
          withResetButton?: boolean;
      }
      Index

      Properties

      children?: ReactNode

      The children of the MetabaseProvider component.s

      -
      className?: string

      A custom class name to be added to the root element.

      +

      Properties

      className?: string

      A custom class name to be added to the root element.

      +
      componentPlugins?: MetabasePluginsConfig

      Additional mapper function to override or add drill-down menu

      entityTypes?: EmbeddingEntityType[]

      An array that specifies which entity types are available in the data picker

      height?: Height<string | number>

      A number or string specifying a CSS size value that specifies the height of the component

      initialSqlParameters?: SqlParameterValues

      Initial values for the SQL parameters.

      isSaveEnabled?: boolean

      Whether to show the save button.

      onBeforeSave?: (
          question: undefined | MetabaseQuestion,
          context: { isNewQuestion: boolean },
      ) => Promise<void>

      A callback function that triggers before saving. Only relevant when isSaveEnabled = true

      +
      onNavigateBack?: () => void

      A callback function that triggers when a user clicks the back button.

      onRun?: (question: undefined | MetabaseQuestion) => void

      A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

      onSave?: (
          question: MetabaseQuestion,
          context: { dashboardTabId?: number; isNewQuestion: boolean },
      ) => void

      A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      -
      questionId: null | SdkQuestionId

      The ID of the question. -
      -This is either: -

      -
        -
      • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
      • -
      • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
      • -
      • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
      • -
      -

      A custom style object to be added to the root element.

      +
      questionId: null | SdkQuestionId

      A custom style object to be added to the root element.

      targetCollection?: SdkCollectionId

      The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

      Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

      width?: Width<string | number>

      A number or string specifying a CSS size value that specifies the width of the component

      withChartTypeSelector?: boolean

      Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

      withDownloads?: boolean

      Enables the ability to download results in the interactive question.

      withResetButton?: boolean

      Determines whether a reset button is displayed. Only relevant when using the default layout.

      -

      +

      diff --git a/_docs/master/embedding/sdk/api/SdkQuestionProps.html b/_docs/master/embedding/sdk/api/SdkQuestionProps.html new file mode 100644 index 0000000000..80d8e43f09 --- /dev/null +++ b/_docs/master/embedding/sdk/api/SdkQuestionProps.html @@ -0,0 +1,48 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SdkQuestionProps +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/SdkQuestionProps.html' +layout: docs-api +--- + +SdkQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface SdkQuestionProps

      interface SdkQuestionProps {
          className?: string;
          componentPlugins?: MetabasePluginsConfig;
          entityTypes?: EmbeddingEntityType[];
          height?: Height<string | number>;
          initialSqlParameters?: SqlParameterValues;
          isSaveEnabled?: boolean;
          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>;
          onNavigateBack?: () => void;
          onRun?: (question: undefined | MetabaseQuestion) => void;
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void;
          plugins?: MetabasePluginsConfig;
          questionId: null | SdkQuestionId;
          style?: CSSProperties;
          targetCollection?: SdkCollectionId;
          title?: SdkQuestionTitleProps;
          width?: Width<string | number>;
          withChartTypeSelector?: boolean;
          withDownloads?: boolean;
          withResetButton?: boolean;
      }
      Index

      Properties

      className?: string

      A custom class name to be added to the root element.

      +
      componentPlugins?: MetabasePluginsConfig

      Additional mapper function to override or add drill-down menu

      +
      entityTypes?: EmbeddingEntityType[]

      An array that specifies which entity types are available in the data picker

      +
      height?: Height<string | number>

      A number or string specifying a CSS size value that specifies the height of the component

      +
      initialSqlParameters?: SqlParameterValues

      Initial values for the SQL parameters.

      +
      isSaveEnabled?: boolean

      Whether to show the save button.

      +
      onBeforeSave?: (
          question: undefined | MetabaseQuestion,
          context: { isNewQuestion: boolean },
      ) => Promise<void>

      A callback function that triggers before saving. Only relevant when isSaveEnabled = true

      +
      onNavigateBack?: () => void

      A callback function that triggers when a user clicks the back button.

      +
      onRun?: (question: undefined | MetabaseQuestion) => void

      A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

      +
      onSave?: (
          question: MetabaseQuestion,
          context: { dashboardTabId?: number; isNewQuestion: boolean },
      ) => void

      A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      +
      questionId: null | SdkQuestionId

      A custom style object to be added to the root element.

      +
      targetCollection?: SdkCollectionId

      The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

      +

      Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

      +
      width?: Width<string | number>

      A number or string specifying a CSS size value that specifies the width of the component

      +
      withChartTypeSelector?: boolean

      Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

      +
      withDownloads?: boolean

      Enables the ability to download results in the interactive question.

      +
      withResetButton?: boolean

      Determines whether a reset button is displayed. Only relevant when using the default layout.

      +

      diff --git a/_docs/master/embedding/sdk/api/StaticDashboard.html b/_docs/master/embedding/sdk/api/StaticDashboard.html index 137b9f13ef..2345fa0fb4 100644 --- a/_docs/master/embedding/sdk/api/StaticDashboard.html +++ b/_docs/master/embedding/sdk/api/StaticDashboard.html @@ -9,8 +9,8 @@ layout: docs-api --- -StaticDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Function StaticDashboard

      dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      +
      dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      drillThroughQuestionHeight?: Height<string | number>

      Height of a question component when drilled from the dashboard to a question level.

      drillThroughQuestionProps?: DrillThroughQuestionProps

      Props of a question component when drilled from the dashboard to a question level.

      Type declaration

      Props for the drill-through question

      diff --git a/_docs/master/embedding/sdk/api/StaticQuestion.html b/_docs/master/embedding/sdk/api/StaticQuestion.html deleted file mode 100644 index 51f2d9ff73..0000000000 --- a/_docs/master/embedding/sdk/api/StaticQuestion.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -version: master -has_magic_breadcrumbs: true -show_category_breadcrumb: true -show_title_breadcrumb: true -category: Embedding -title: StaticQuestion -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/StaticQuestion.html' -layout: docs-api ---- - -StaticQuestion | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Function StaticQuestion

      • A component that renders a static question.

        -

        Parameters

        • props: StaticQuestionProps
          • OptionalclassName?: string

            A custom class name to be added to the root element.

            -
          • Optionalheight?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

            -
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for the SQL parameters.

            -
          • questionId: null | SdkQuestionId

            The ID of the question. -
            -This is either: -

            -
              -
            • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
            • -
            • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
            • -
            • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
            • -
            -
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

            -
          • Optionalwidth?: Width<string | number>

            A number or string specifying a CSS size value that specifies the width of the component

            -
          • OptionalwithChartTypeSelector?: boolean
          • OptionalwithDownloads?: boolean

            Enables the ability to download results in the interactive question.

            -

        Returns ReactNode

      diff --git a/_docs/master/embedding/sdk/api/StaticQuestionProps.html b/_docs/master/embedding/sdk/api/StaticQuestionProps.html index 0ddc7ab72b..726ffb163d 100644 --- a/_docs/master/embedding/sdk/api/StaticQuestionProps.html +++ b/_docs/master/embedding/sdk/api/StaticQuestionProps.html @@ -9,29 +9,21 @@ layout: docs-api --- -StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface StaticQuestionProps

      interface StaticQuestionProps {
          className?: string;
          height?: Height<string | number>;
          initialSqlParameters?: SqlParameterValues;
          questionId: null | SdkQuestionId;
          style?: CSSProperties;
          width?: Width<string | number>;
          withChartTypeSelector?: boolean;
          withDownloads?: boolean;
      }
      Index

      Properties

      className? +StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface StaticQuestionProps

      interface StaticQuestionProps {
          className?: string;
          height?: Height<string | number>;
          initialSqlParameters?: SqlParameterValues;
          questionId: null | SdkQuestionId;
          style?: CSSProperties;
          title?: SdkQuestionTitleProps;
          width?: Width<string | number>;
          withChartTypeSelector?: boolean;
          withDownloads?: boolean;
      }
      Index

      Properties

      className?: string

      A custom class name to be added to the root element.

      height?: Height<string | number>

      A number or string specifying a CSS size value that specifies the height of the component

      initialSqlParameters?: SqlParameterValues

      Initial values for the SQL parameters.

      -
      questionId: null | SdkQuestionId

      The ID of the question. -
      -This is either: -

      -
        -
      • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
      • -
      • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
      • -
      • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
      • -
      -

      A custom style object to be added to the root element.

      +
      questionId: null | SdkQuestionId

      A custom style object to be added to the root element.

      +

      Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

      width?: Width<string | number>

      A number or string specifying a CSS size value that specifies the width of the component

      -
      withChartTypeSelector?: boolean
      withDownloads?: boolean

      Enables the ability to download results in the interactive question.

      -

      +
      withChartTypeSelector?: boolean

      Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

      +
      withDownloads?: boolean

      Enables the ability to download results in the interactive question.

      +

      diff --git a/_docs/master/embedding/sdk/api/assets/navigation.js b/_docs/master/embedding/sdk/api/assets/navigation.js index ba4359a8d1..aa69cd7e02 100644 --- a/_docs/master/embedding/sdk/api/assets/navigation.js +++ b/_docs/master/embedding/sdk/api/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJylWU1z2zYQ/S88ezpppkmmvtmyPI3jtK7lJIeMDxC5EVGBAAMsrTod//cMzZIigcUH6ZNm8N6+t1h8U1//yxD+xew0WykhIEeu5LlWBwM6O8nykotCg8xOvwZ5NcOSgn4psRLZSbbnsshO3/72dOKXudGqNgGtZ3wq+PrN26f7saYGhnDBTLlVTBcfVcGErxc0tTcn0FBfCLrdHR/F7ZFX9zMTDfg1Ozik1xiwYs5qftQjYafbbsH/bsC0AxUs9Yg0Sb9vt31OslwwY7LTrIBaQ84QisxrTVZ7AoZnztBjTx/WBUe2FTDm/e/lQIGJ4nCtvGk8NKTvJYJmOfIHKjcKDaRH0a0MvZRQkhtkyHMiPwsIpGYxrawoNDzgo35Epu+F5kLclVo1u9Iz3byUxJFz1wYBpo1bzz5n+f68QXRyjXOtpF/9/u7XN68jbhrYXjV4oVVdqEOKJxWxwHlVMo13jzWkW9MhL/HeQHtUKfsISw5Z4H2hDlIoVnzhxQ5m1D0Q9+Is5rovdW13SaVTZ7fDnrkou/hUnyUOl1wg6PQxJPgLqtippLotdYnrL6lY/7sBRC53Jr12wcgXZjHffWlV+9/P3DRM8B8srdT+sJk9vwUDmLoAbfJMrw17gFQri7ugsq3CMPOVrtI8nYi5fWyqimn+Y8YpRocs6PEdRwFxvyMtfLH6CMi2zLTUB154X5EFfOMSevJZg+VKyW98d8zBxwjcg0JyMSG3Vm7EF47lWc0/wGNI98ha5nB1wJj81QGXaW9YJWLiLSdVfTTKlmaPJAxXT7UmIQmHJ1/3Dohc6B3S5BGRcN2eEsmnyIynp8LSu0rOmYH4oRpihTYicledsX0+X2ZXSqjxJ6ChLRptf+C55qaNbCoZ+gw0YkUdGoOqGl6Fq/a7C8jmPUI1MvCTYvqToE7H1Q+QZum3QR7VFpqt1aWyFlCBxIDwhJfiQpfZRmJK62oLRcHlbi2R42P7ZBp9JnHBqN7A7O6zH+Bx/N2FQKNHaa7kn6wapdW3xCKv1Y7Ldp9oRimMGlM335Xg+f4sn+5iBLhA70Y0Oy6N7xD1MZOdhlVNaA/YfLXpnKPxGapKE8dR1x7aV4/MqlYSJN6VMJ4nNJ6aF/EZzYFma0XGm+aluyC7UVziX9t/ICcuNxYhVXfYBjZgTHtFVXsgJhRJS/W4BMzLW/jenqnPgZeEA0FK1lcSL1nFBXGlPGLJ17HwMC4aPfeiZCMpa8GzBKiZT8Z/MtQl85PzH5PbjxumWQUI2v77xAJiOptiP9pIxh+xp0CCzrCcLJlR+xyVa8WK9cPkGCfhBM3uILTS6htT4rVWetjXpioTaLaWfc0m8RTVthJ/MFkI0M5CofEE1X4pWJU7Ns/QoB7kJJyg2S4QK6euKRr7XXgXjovF1FrP9l8GkMXVAW/B1Eqa0XZA47Tq/dP9Ty1Guno=" \ No newline at end of file +window.navigationData = "eJylWV1z0zgU/S9+7uywzAKzfWvTZKCU3W5T4IHhQbEusTayZKTrhsLw3xknTWLLV1/mqR2dc8+Rrq71lU8/CoRvWJwXMy0llCi0ujR6a8EUZ0VZCckNqOL8U5DXMKwo6I8Ka1mcFRuheHH+8q+fZ36ZW6MbG9Da4UPB5y9e/vzc1zTAEK6YrVaaGf5OcyZ9o6CpB3MCDYylteBEXDTipEbCodQQ7m52fJRxgry6H5hswa+5h1MS/l8LtpuoYKp7pIHfod3Nx1lRSmZtcV5waAyUDIEXXmsyPQMwPJDjqD1jmHOBbCWhz3vyGkGBmX2jEAwrUTxQShQaEFsiQ1ESOg4QkBj13ckjjYdqjBqDI+qlhHSdMTmSFBqe8F4nIuV7ZYSU95XR7brylJuXkpipQ0yXbm0uW8SRRQp7kluqzxSHuPYU1cPfJSAKtbZXRjdcbxPcgpETe/FB2JZJ8Z2lDdgflul/BxYwtVRccqbXkp3+X2hTxw3JiEzXe4ES4lYnWnD94BtPVbpIZi8vWblJnQaH6zg9+/vVny+eR9wMsI1uMb3myYgJzrOKGbx/bCDdmg75He8ldGfClEWLDpngfaW3SmrGPwq+hoy8B+J+uxe57lNdF0IimPQxE/zJrqluU13cvSB/95jq3K2NqSuGw53i1tY1M+J7xndLh9De/TPVO0C2YrZbjB8E914gOXwRCg7kixarmVZfxPrUJx8jcJIlvJ/EXCRDxEkVCYe2i9AYY6MbT+444qPA6qIRb+ExpHtiTXO43mJM/nqL07SXrJYx8Y4TL779FSBylh+SyEtExqVRY+Ut8ktmwX/moNCUQpppqQ1Rkfv2FIXxNdxFUlTuK6hhLLFrDsWTy17G+rbb1XeD7d31j23RaPdJ6UbYLrKtVejhqceKOrQWdX28h866pxlQ7RuEumfgJ8X0B0F7nbF+gJSl3wV5VDsoW2vflbmEGhQGhAe8FBc6zS4SU5rXK+BcqPVcocDH7uzYewgZg1G9I3N/UHkLj/2XFQKN7u6lVv+w/od3aIlF3ui1UN361va60GtMXbxnUpSbi5JeQHrgBL1b2a6Fsr5t0sdMdjp+1eTq+YTlqw1rjsbTVetGK1DoWV6HeKoq8UA4grK1IrNF89JdkN1qofDf1f9QEocPh5Cqe/yIl2Bt93KgN0CUA0lL9VgAltUdfO02013ggnAgSMn6WuGC1UISR74TlqoWmcZJs/feUqfv96Nfg8YKt8ywGhCM+8uEA8R0lnzT+wD7D+NDIEHnWMiOTK89R+VGMz5/GGx/JJygud9AnG4dGlPijdHmuKIMVQZQttb4fY3AU1S7TLxmikswoxKl8QTVwzHXydypOUODeqEk4QTN7gNx+rRvisZ+ld4PZ4zF1DrP7pkSFL/e4h3YRivb24to3Hc9+/wLboObAg==" \ No newline at end of file diff --git a/_docs/master/embedding/sdk/api/assets/search.js b/_docs/master/embedding/sdk/api/assets/search.js index a91212dd5e..2a04bc2d93 100644 --- a/_docs/master/embedding/sdk/api/assets/search.js +++ b/_docs/master/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/_docs/master/embedding/sdk/api/index.html b/_docs/master/embedding/sdk/api/index.html index 4cb4c9246d..60bca935d7 100644 --- a/_docs/master/embedding/sdk/api/index.html +++ b/_docs/master/embedding/sdk/api/index.html @@ -9,4 +9,4 @@ layout: docs-api --- -Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Embedded analytics SDK API

      CollectionBrowser

      CollectionBrowser
      CollectionBrowserProps

      CreateDashboardModal

      CreateDashboardModal
      CreateDashboardModalProps
      CreateDashboardValues
      useCreateDashboardApi

      CreateQuestion

      CreateQuestion
      CreateQuestionProps

      Dashboard

      EditableDashboard
      EditableDashboardProps
      InteractiveDashboard
      InteractiveDashboardProps
      StaticDashboard
      StaticDashboardProps

      InteractiveQuestion

      DrillThroughQuestionProps
      InteractiveQuestion
      InteractiveQuestionBackButtonProps
      InteractiveQuestionBreakoutDropdownProps
      InteractiveQuestionChartTypeDropdownProps
      InteractiveQuestionChartTypeSelectorProps
      InteractiveQuestionDownloadWidgetDropdownProps
      InteractiveQuestionDownloadWidgetProps
      InteractiveQuestionEditorButtonProps
      InteractiveQuestionEditorProps
      InteractiveQuestionFilterDropdownProps
      InteractiveQuestionFilterProps
      InteractiveQuestionProps
      InteractiveQuestionQuestionSettingsDropdownProps
      InteractiveQuestionQuestionSettingsProps
      InteractiveQuestionQuestionVisualizationProps
      InteractiveQuestionResetButtonProps
      InteractiveQuestionSaveButtonProps
      InteractiveQuestionSaveQuestionFormProps
      InteractiveQuestionSummarizeDropdownProps
      InteractiveQuestionTitleProps

      MetabaseProvider

      defineMetabaseAuthConfig
      MetabaseAuthConfig
      MetabaseAuthConfigWithApiKey
      MetabaseAuthConfigWithJwt
      MetabaseAuthConfigWithSaml
      MetabaseProvider
      MetabaseProviderProps

      StaticQuestion

      StaticQuestion
      StaticQuestionProps

      other

      BaseInteractiveQuestionProps
      ButtonProps
      ChartColor
      CollectionBrowserListColumns
      CustomDashboardCardMenuItem
      DashboardCardCustomMenuItem
      DashboardCardMenu
      DashboardCardMenuCustomElement
      DashCardMenuItem
      EmbeddingEntityType
      EntityTypeFilterKeys
      IconName
      LoginStatus
      MetabaseClickAction
      MetabaseClickActionPluginsConfig
      MetabaseCollection
      MetabaseCollectionItem
      MetabaseColors
      MetabaseComponentTheme
      MetabaseDashboard
      MetabaseDashboardPluginsConfig
      MetabaseDataPointObject
      MetabaseEmbeddingSessionToken
      MetabaseFetchRequestTokenFn
      MetabaseFontFamily
      MetabasePluginsConfig
      MetabaseQuestion
      MetabaseTheme
      MetabaseUser
      ParameterValues
      SdkCollectionId
      SdkDashboardId
      SdkDashboardLoadEvent
      SdkEntityId
      SdkErrorComponent
      SdkErrorComponentProps
      SdkEventHandlersConfig
      SdkQuestionId
      SdkQuestionTitleProps
      SdkUserId
      SqlParameterValues
      UserBackendJwtResponse

      +Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Embedded analytics SDK API

      CollectionBrowser

      CollectionBrowser
      CollectionBrowserProps

      CreateDashboardModal

      CreateDashboardModal
      useCreateDashboardApi
      CreateDashboardModalProps
      CreateDashboardValues

      CreateQuestion

      CreateQuestion
      CreateQuestionProps

      Dashboard

      EditableDashboard
      InteractiveDashboard
      StaticDashboard
      EditableDashboardProps
      InteractiveDashboardProps
      StaticDashboardProps

      InteractiveQuestion

      DrillThroughQuestionProps
      InteractiveQuestionEditorButtonProps
      InteractiveQuestionEditorProps
      InteractiveQuestionProps
      InteractiveQuestionQuestionSettingsDropdownProps
      InteractiveQuestionQuestionVisualizationProps
      InteractiveQuestionResetButtonProps
      InteractiveQuestionSaveQuestionFormProps
      InteractiveQuestionTitleProps
      SdkQuestionProps
      InteractiveQuestionBackButtonProps
      InteractiveQuestionBreakoutDropdownProps
      InteractiveQuestionChartTypeDropdownProps
      InteractiveQuestionChartTypeSelectorProps
      InteractiveQuestionDownloadWidgetDropdownProps
      InteractiveQuestionDownloadWidgetProps
      InteractiveQuestionFilterDropdownProps
      InteractiveQuestionFilterProps
      InteractiveQuestionQuestionSettingsProps
      InteractiveQuestionSaveButtonProps
      InteractiveQuestionSummarizeDropdownProps

      MetabaseProvider

      defineMetabaseAuthConfig
      MetabaseProvider
      MetabaseProviderProps
      MetabaseAuthConfig
      MetabaseAuthConfigWithApiKey
      MetabaseAuthConfigWithJwt
      MetabaseAuthConfigWithSaml

      StaticQuestion

      StaticQuestionProps

      other

      BaseSdkQuestionProps
      MetabaseColors
      MetabaseQuestion
      MetabaseTheme
      ButtonProps
      ChartColor
      CollectionBrowserListColumns
      CustomDashboardCardMenuItem
      DashboardCardCustomMenuItem
      DashboardCardMenu
      DashboardCardMenuCustomElement
      DashCardMenuItem
      EmbeddingEntityType
      EntityTypeFilterKeys
      IconName
      LoginStatus
      MetabaseClickAction
      MetabaseClickActionPluginsConfig
      MetabaseCollection
      MetabaseCollectionItem
      MetabaseComponentTheme
      MetabaseDashboard
      MetabaseDashboardPluginsConfig
      MetabaseDataPointObject
      MetabaseEmbeddingSessionToken
      MetabaseFetchRequestTokenFn
      MetabaseFontFamily
      MetabasePluginsConfig
      MetabaseUser
      ParameterValues
      SdkCollectionId
      SdkDashboardId
      SdkDashboardLoadEvent
      SdkEntityId
      SdkErrorComponent
      SdkErrorComponentProps
      SdkEventHandlersConfig
      SdkQuestionId
      SdkQuestionTitleProps
      SdkUserId
      SqlParameterValues
      UserBackendJwtResponse

      diff --git a/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/BaseSdkQuestionProps.md similarity index 99% rename from _docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md rename to _docs/master/embedding/sdk/api/snippets/BaseSdkQuestionProps.md index c3205ce9c4..1550e682b6 100644 --- a/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/BaseSdkQuestionProps.md @@ -4,8 +4,8 @@ has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true category: Embedding -title: BaseInteractiveQuestionProps -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md' +title: BaseSdkQuestionProps +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/BaseSdkQuestionProps.md' layout: new-docs --- diff --git a/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md index a5ea63f17b..ac2e474cee 100644 --- a/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md @@ -15,16 +15,25 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | -| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `isSaveEnabled?` | `boolean` | Whether to show the save button. | -| `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | -| `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | -| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | -| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | +| Property | Type | Description | +| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `componentPlugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | +| `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | +| `withResetButton?` | `boolean` | Determines whether a reset button is displayed. Only relevant when using the default layout. | diff --git a/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md index 69186d18d2..37062a3333 100644 --- a/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md @@ -15,22 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/IconName.md b/_docs/master/embedding/sdk/api/snippets/IconName.md index b39c97dd64..61158e48be 100644 --- a/_docs/master/embedding/sdk/api/snippets/IconName.md +++ b/_docs/master/embedding/sdk/api/snippets/IconName.md @@ -19,6 +19,7 @@ type IconName = | "question" | "collection" | "dashboard" + | "revert" | "add" | "add_column" | "add_data" @@ -168,7 +169,6 @@ type IconName = | "progress" | "pulse" | "recents" - | "revert" | "sankey" | "share" | "split" diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md index 3f026cc008..6cde9d0c98 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md @@ -30,7 +30,7 @@ function InteractiveDashboard( onLoad?: (dashboard: null | MetabaseDashboard) => void; onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void; } & { - dataPickerProps?: Pick; + dataPickerProps?: Pick; } & {}, ): Element; ``` @@ -41,9 +41,9 @@ A dashboard component with drill downs, click behaviors, and the ability to view -| Parameter | Type | Description | -| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\>; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | +| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\>; \} & \{ \} | | diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md index f479613fcb..1c97d668de 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md @@ -15,22 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestion.md b/_docs/master/embedding/sdk/api/snippets/InteractiveQuestion.md deleted file mode 100644 index 62f4d3b260..0000000000 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestion.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -version: master -has_magic_breadcrumbs: true -show_category_breadcrumb: true -show_title_breadcrumb: true -category: Embedding -title: InteractiveQuestion -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestion.md' -layout: new-docs ---- - -```ts -function InteractiveQuestion(props: InteractiveQuestionProps): null | Element; -``` - -A component that renders an interactive question. - -## Parameters - - - -| Parameter | Type | Description | -| :-------- | :-------------------------------------------------------------- | :---------- | -| `props` | [`InteractiveQuestionProps`](./api/InteractiveQuestionProps) | | - - - -## Returns - - - -\| `null` -\| [`Element`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L4313) - - diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md index 58e17b122f..508615f00b 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md @@ -15,25 +15,26 @@ layout: new-docs -| Property | Type | Description | -| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `children?` | [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | The children of the MetabaseProvider component.s | -| `className?` | `string` | A custom class name to be added to the root element. | -| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | -| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `isSaveEnabled?` | `boolean` | Whether to show the save button. | -| `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | -| `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | -| `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | The ID of the question.
      This is either:
      - The numerical ID when accessing a question link, e.g., `http://localhost:3000/question/1-my-question` where the ID is `1`
      - The `entity_id` key of the question object. You can find a question's Entity ID in the info panel when viewing a question
      - `new` to show the notebook editor for creating new questions. `isSaveEnabled` must be `true` to allow saving the question | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | -| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. | -| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | -| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | -| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | -| `withResetButton?` | `boolean` | Determines whether a reset button is displayed. Only relevant when using the default layout. | +| Property | Type | Description | +| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `componentPlugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | +| `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | - | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | +| `withResetButton?` | `boolean` | Determines whether a reset button is displayed. Only relevant when using the default layout. | diff --git a/_docs/master/embedding/sdk/api/snippets/SdkQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/SdkQuestionProps.md new file mode 100644 index 0000000000..84fdb84c84 --- /dev/null +++ b/_docs/master/embedding/sdk/api/snippets/SdkQuestionProps.md @@ -0,0 +1,40 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SdkQuestionProps +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkQuestionProps.md' +layout: new-docs +--- + +**`Expand`** + +## Properties + + + +| Property | Type | Description | +| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `componentPlugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | +| `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | - | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | +| `withResetButton?` | `boolean` | Determines whether a reset button is displayed. Only relevant when using the default layout. | + + diff --git a/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md b/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md index 3136fb39f0..a2e705acfe 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md @@ -30,7 +30,7 @@ function StaticDashboard( onLoad?: (dashboard: null | MetabaseDashboard) => void; onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void; } & { - dataPickerProps?: Pick; + dataPickerProps?: Pick; } & {}, ): Element; ``` @@ -41,9 +41,9 @@ A lightweight dashboard component. -| Parameter | Type | Description | -| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\>; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | +| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\>; \} & \{ \} | | diff --git a/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md index 048fcb36ab..7a1c7074d6 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md @@ -15,22 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
      This is either:
      - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
      - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
      - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/StaticQuestion.md b/_docs/master/embedding/sdk/api/snippets/StaticQuestion.md deleted file mode 100644 index d4933df40c..0000000000 --- a/_docs/master/embedding/sdk/api/snippets/StaticQuestion.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -version: master -has_magic_breadcrumbs: true -show_category_breadcrumb: true -show_title_breadcrumb: true -category: Embedding -title: StaticQuestion -source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/StaticQuestion.md' -layout: new-docs ---- - -```ts -function StaticQuestion(props: StaticQuestionProps): ReactNode; -``` - -A component that renders a static question. - -## Parameters - - - -| Parameter | Type | -| :-------- | :---------------------------------------------------- | -| `props` | [`StaticQuestionProps`](./api/StaticQuestionProps) | - - - -## Returns - - - -[`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) - - diff --git a/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md index b652cbc226..6e3657c2a4 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md @@ -15,15 +15,16 @@ layout: new-docs -| Property | Type | Description | -| :---------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | The ID of the question.
      This is either:
      - The numerical ID when accessing a question link, e.g., `http://localhost:3000/question/1-my-question` where the ID is `1`
      - The `entity_id` key of the question object. You can find a question's Entity ID in the info panel when viewing a question
      - `new` to show the notebook editor for creating new questions. `isSaveEnabled` must be `true` to allow saving the question | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | -| `withChartTypeSelector?` | `boolean` | - | -| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | +| Property | Type | Description | +| :---------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | - | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | diff --git a/_docs/master/embedding/sdk/api/snippets/index.md b/_docs/master/embedding/sdk/api/snippets/index.md index 205f77f586..dd64abddbc 100644 --- a/_docs/master/embedding/sdk/api/snippets/index.md +++ b/_docs/master/embedding/sdk/api/snippets/index.md @@ -21,9 +21,9 @@ layout: new-docs | Name | Description | | :-------------------------------------------------------------- | :------------------ | | [CreateDashboardModal](./api/CreateDashboardModal) | Creates a dashboard | +| [useCreateDashboardApi](./api/useCreateDashboardApi) | Creates a dashboard | | [CreateDashboardModalProps](./api/CreateDashboardModalProps) | - | | [CreateDashboardValues](./api/CreateDashboardValues) | - | -| [useCreateDashboardApi](./api/useCreateDashboardApi) | Creates a dashboard | ## CreateQuestion @@ -37,62 +37,64 @@ layout: new-docs | Name | Description | | :-------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [EditableDashboard](./api/EditableDashboard) | A dashboard component with the features available in the `InteractiveDashboard` component, as well as the ability to add and update questions, layout, and content within your dashboard. | -| [EditableDashboardProps](./api/EditableDashboardProps) | - | | [InteractiveDashboard](./api/InteractiveDashboard) | A dashboard component with drill downs, click behaviors, and the ability to view and click into questions. | -| [InteractiveDashboardProps](./api/InteractiveDashboardProps) | - | | [StaticDashboard](./api/StaticDashboard) | A lightweight dashboard component. | +| [EditableDashboardProps](./api/EditableDashboardProps) | - | +| [InteractiveDashboardProps](./api/InteractiveDashboardProps) | - | | [StaticDashboardProps](./api/StaticDashboardProps) | - | ## InteractiveQuestion -| Name | Description | -| :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------ | -| [DrillThroughQuestionProps](./api/DrillThroughQuestionProps) | Props for the drill-through question | -| [InteractiveQuestion](./api/InteractiveQuestion) | A component that renders an interactive question. | -| [InteractiveQuestionBackButtonProps](./api/InteractiveQuestionBackButtonProps) | - | -| [InteractiveQuestionBreakoutDropdownProps](./api/InteractiveQuestionBreakoutDropdownProps) | - | -| [InteractiveQuestionChartTypeDropdownProps](./api/InteractiveQuestionChartTypeDropdownProps) | - | -| [InteractiveQuestionChartTypeSelectorProps](./api/InteractiveQuestionChartTypeSelectorProps) | - | -| [InteractiveQuestionDownloadWidgetDropdownProps](./api/InteractiveQuestionDownloadWidgetDropdownProps) | - | -| [InteractiveQuestionDownloadWidgetProps](./api/InteractiveQuestionDownloadWidgetProps) | - | -| [InteractiveQuestionEditorButtonProps](./api/InteractiveQuestionEditorButtonProps) | - | -| [InteractiveQuestionEditorProps](./api/InteractiveQuestionEditorProps) | - | -| [InteractiveQuestionFilterDropdownProps](./api/InteractiveQuestionFilterDropdownProps) | - | -| [InteractiveQuestionFilterProps](./api/InteractiveQuestionFilterProps) | - | -| [InteractiveQuestionProps](./api/InteractiveQuestionProps) | - | -| [InteractiveQuestionQuestionSettingsDropdownProps](./api/InteractiveQuestionQuestionSettingsDropdownProps) | - | -| [InteractiveQuestionQuestionSettingsProps](./api/InteractiveQuestionQuestionSettingsProps) | - | -| [InteractiveQuestionQuestionVisualizationProps](./api/InteractiveQuestionQuestionVisualizationProps) | - | -| [InteractiveQuestionResetButtonProps](./api/InteractiveQuestionResetButtonProps) | - | -| [InteractiveQuestionSaveButtonProps](./api/InteractiveQuestionSaveButtonProps) | - | -| [InteractiveQuestionSaveQuestionFormProps](./api/InteractiveQuestionSaveQuestionFormProps) | - | -| [InteractiveQuestionSummarizeDropdownProps](./api/InteractiveQuestionSummarizeDropdownProps) | - | -| [InteractiveQuestionTitleProps](./api/InteractiveQuestionTitleProps) | - | +| Name | Description | +| :------------------------------------------------------------------------------------------------------------ | :----------------------------------- | +| [DrillThroughQuestionProps](./api/DrillThroughQuestionProps) | Props for the drill-through question | +| [InteractiveQuestionEditorButtonProps](./api/InteractiveQuestionEditorButtonProps) | - | +| [InteractiveQuestionEditorProps](./api/InteractiveQuestionEditorProps) | - | +| [InteractiveQuestionProps](./api/InteractiveQuestionProps) | - | +| [InteractiveQuestionQuestionSettingsDropdownProps](./api/InteractiveQuestionQuestionSettingsDropdownProps) | - | +| [InteractiveQuestionQuestionVisualizationProps](./api/InteractiveQuestionQuestionVisualizationProps) | - | +| [InteractiveQuestionResetButtonProps](./api/InteractiveQuestionResetButtonProps) | - | +| [InteractiveQuestionSaveQuestionFormProps](./api/InteractiveQuestionSaveQuestionFormProps) | - | +| [InteractiveQuestionTitleProps](./api/InteractiveQuestionTitleProps) | - | +| [SdkQuestionProps](./api/SdkQuestionProps) | - | +| [InteractiveQuestionBackButtonProps](./api/InteractiveQuestionBackButtonProps) | - | +| [InteractiveQuestionBreakoutDropdownProps](./api/InteractiveQuestionBreakoutDropdownProps) | - | +| [InteractiveQuestionChartTypeDropdownProps](./api/InteractiveQuestionChartTypeDropdownProps) | - | +| [InteractiveQuestionChartTypeSelectorProps](./api/InteractiveQuestionChartTypeSelectorProps) | - | +| [InteractiveQuestionDownloadWidgetDropdownProps](./api/InteractiveQuestionDownloadWidgetDropdownProps) | - | +| [InteractiveQuestionDownloadWidgetProps](./api/InteractiveQuestionDownloadWidgetProps) | - | +| [InteractiveQuestionFilterDropdownProps](./api/InteractiveQuestionFilterDropdownProps) | - | +| [InteractiveQuestionFilterProps](./api/InteractiveQuestionFilterProps) | - | +| [InteractiveQuestionQuestionSettingsProps](./api/InteractiveQuestionQuestionSettingsProps) | - | +| [InteractiveQuestionSaveButtonProps](./api/InteractiveQuestionSaveButtonProps) | - | +| [InteractiveQuestionSummarizeDropdownProps](./api/InteractiveQuestionSummarizeDropdownProps) | - | ## MetabaseProvider | Name | Description | | :-------------------------------------------------------------------- | :------------------------------------------------------------ | | [defineMetabaseAuthConfig](./api/defineMetabaseAuthConfig) | Defines a Metabase auth config. | +| [MetabaseProvider](./api/MetabaseProvider) | A component that provides the Metabase SDK context and theme. | +| [MetabaseProviderProps](./api/MetabaseProviderProps) | - | | [MetabaseAuthConfig](./api/MetabaseAuthConfig) | - | | [MetabaseAuthConfigWithApiKey](./api/MetabaseAuthConfigWithApiKey) | - | | [MetabaseAuthConfigWithJwt](./api/MetabaseAuthConfigWithJwt) | - | | [MetabaseAuthConfigWithSaml](./api/MetabaseAuthConfigWithSaml) | - | -| [MetabaseProvider](./api/MetabaseProvider) | A component that provides the Metabase SDK context and theme. | -| [MetabaseProviderProps](./api/MetabaseProviderProps) | - | ## StaticQuestion -| Name | Description | -| :-------------------------------------------------- | :------------------------------------------ | -| [StaticQuestion](./api/StaticQuestion) | A component that renders a static question. | -| [StaticQuestionProps](./api/StaticQuestionProps) | - | +| Interface | Description | +| :-------------------------------------------------- | :---------- | +| [StaticQuestionProps](./api/StaticQuestionProps) | - | ## other | Name | Description | | :---------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [BaseInteractiveQuestionProps](./api/BaseInteractiveQuestionProps) | - | +| [BaseSdkQuestionProps](./api/BaseSdkQuestionProps) | - | +| [MetabaseColors](./api/MetabaseColors) | - | +| [MetabaseQuestion](./api/MetabaseQuestion) | - | +| [MetabaseTheme](./api/MetabaseTheme) | Theme configuration for embedded Metabase components. | | [ButtonProps](./api/ButtonProps) | - | | [ChartColor](./api/ChartColor) | - | | [CollectionBrowserListColumns](./api/CollectionBrowserListColumns) | - | @@ -109,7 +111,6 @@ layout: new-docs | [MetabaseClickActionPluginsConfig](./api/MetabaseClickActionPluginsConfig) | - | | [MetabaseCollection](./api/MetabaseCollection) | The Collection entity | | [MetabaseCollectionItem](./api/MetabaseCollectionItem) | The CollectionItem entity | -| [MetabaseColors](./api/MetabaseColors) | - | | [MetabaseComponentTheme](./api/MetabaseComponentTheme) | Theme options for customizing specific Metabase components and visualizations. | | [MetabaseDashboard](./api/MetabaseDashboard) | The Dashboard entity | | [MetabaseDashboardPluginsConfig](./api/MetabaseDashboardPluginsConfig) | - | @@ -118,8 +119,6 @@ layout: new-docs | [MetabaseFetchRequestTokenFn](./api/MetabaseFetchRequestTokenFn) | - | | [MetabaseFontFamily](./api/MetabaseFontFamily) | - | | [MetabasePluginsConfig](./api/MetabasePluginsConfig) | - | -| [MetabaseQuestion](./api/MetabaseQuestion) | - | -| [MetabaseTheme](./api/MetabaseTheme) | Theme configuration for embedded Metabase components. | | [MetabaseUser](./api/MetabaseUser) | The User entity | | [ParameterValues](./api/ParameterValues) | - | | [SdkCollectionId](./api/SdkCollectionId) | - | diff --git a/_docs/master/embedding/start.md b/_docs/master/embedding/start.md index a83528b80f..ea2a7ab88d 100644 --- a/_docs/master/embedding/start.md +++ b/_docs/master/embedding/start.md @@ -52,3 +52,7 @@ Admins can also create unsecured public links or embeds of questions and dashboa ## [Securing embedded Metabase](./securing-embeds) How to make sure the right people can see the right data in your embedded Metabase. + +## [Translating questions and dashboards](./translations) + +Upload a translation dictionary to translate questions and dashboards (only in static embeds). diff --git a/_docs/master/embedding/static-embedding.md b/_docs/master/embedding/static-embedding.md index a61ea8b85a..7b0d3d55c3 100644 --- a/_docs/master/embedding/static-embedding.md +++ b/_docs/master/embedding/static-embedding.md @@ -197,6 +197,10 @@ You can only use the **URL** option for [custom destinations](../dashboards/inte You can propagate filter values into the external URL, unless the filter is locked. +## Translating static embeds + +See [Translating embedded questions and dashboards](./translations). + ## Further reading - [Parameters for static embeds](./static-embedding-parameters). diff --git a/_docs/master/embedding/translations.md b/_docs/master/embedding/translations.md new file mode 100644 index 0000000000..5202bded97 --- /dev/null +++ b/_docs/master/embedding/translations.md @@ -0,0 +1,47 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: 'Translate embedded dashboards and questions' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/translations.md' +layout: new-docs +summary: 'Upload a translation dictionary to translate questions and dashboards into different languages. Only available for static embeds.' +--- + +# Translate embedded dashboards and questions + +> For now, translations are only available for [static embeds](./static-embedding), not Interactive embedding or the Embedded analytics SDK. + +You can upload a translation dictionary to translate strings both in Metabase content (like dashboard titles) and in the data itself (like column names and values). + +The dictionary must be a CSV with these columns: + +- Locale Code +- String +- Translation + +> Don't put any sensitive data in the dictionary, since anyone can see the dictionary—including viewers of public links. + +Uploading a new dictionary will replace the existing dictionary. + +To remove a translation dictionary, upload a blank dictionary. + +## Example translation dictionary + +Metabase uses these dictionaries to translate user-generated content, like dashboard names in [static embeds](./static-embedding). + +| Language | String | Translation | +| -------- | ----------- | ------------ | +| pt_BR | Examples | Exemplos | +| pt_BR | First tab | Primeira aba | +| pt_BR | Another tab | Outra aba | +| pt_BR | Title | Título | +| pt_BR | Vendor | Vendedor | + +[See a list of supported locales](../configuring-metabase/localization#supported-languages) + +## Further reading + +- [Static embedding](./static-embedding) diff --git a/_docs/master/permissions/impersonation.md b/_docs/master/permissions/impersonation.md index 034aef9963..0303d10667 100644 --- a/_docs/master/permissions/impersonation.md +++ b/_docs/master/permissions/impersonation.md @@ -13,7 +13,7 @@ layout: new-docs {% include plans-blockquote.html feature="Impersonation access" %} -> For now, impersonation access is only available for MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database _connections_ based on who is logged in, check out [Database routing](./database-routing). +> For now, impersonation access is only available for ClickHouse, MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database _connections_ based on who is logged in, check out [Database routing](./database-routing). > If you're using views in PostgresSQL, the row-level security policies on views will only work on Postgres versions 15 and higher. diff --git a/_docs/master/questions/images/02-widget.png b/_docs/master/questions/images/02-widget.png deleted file mode 100644 index 4ce9fda455..0000000000 Binary files a/_docs/master/questions/images/02-widget.png and /dev/null differ diff --git a/_docs/master/questions/images/filter-and-parameter.png b/_docs/master/questions/images/filter-and-parameter.png new file mode 100644 index 0000000000..e0df5f3c81 Binary files /dev/null and b/_docs/master/questions/images/filter-and-parameter.png differ diff --git a/_docs/master/questions/images/join-with-custom-expression.png b/_docs/master/questions/images/join-with-custom-expression.png new file mode 100644 index 0000000000..713683583e Binary files /dev/null and b/_docs/master/questions/images/join-with-custom-expression.png differ diff --git a/_docs/master/questions/images/multiple-values.png b/_docs/master/questions/images/multiple-values.png new file mode 100644 index 0000000000..604c5ed4b1 Binary files /dev/null and b/_docs/master/questions/images/multiple-values.png differ diff --git a/_docs/master/questions/native-editor/basic-sql-parameters.md b/_docs/master/questions/native-editor/basic-sql-parameters.md new file mode 100644 index 0000000000..f34601c89b --- /dev/null +++ b/_docs/master/questions/native-editor/basic-sql-parameters.md @@ -0,0 +1,103 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Basic SQL parameters' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/basic-sql-parameters.md' +layout: new-docs +summary: 'Text, number, and date variables let you plug basic values into your SQL code.' +--- + +# Basic SQL parameters + +> If you want to filter on a database field in your query, you should prefer using [field filter variables](./sql-parameters), which require a different syntax. + +Text, number, and date variables let you plug basic values into your SQL code. + +To add a basic variable to a SQL query, enclose the variable in double braces: `{% raw %}{{variable_name}}{% endraw %}`. + +This example defines a **Text** variable called `category_filter` (but you can call the variable whatever you want): + +```sql +{% raw %} +SELECT + count(*) +FROM + products +WHERE + category = {{category_filter}}; +{% endraw %} +``` + +These basic variabless simply plug in the values set by the widget into the placeholder in the code. Basic variables have a different syntax than [field filters](./sql-parameters). + +Here's the [field filter](./field-filters) syntax: + +```sql +{% raw %} +WHERE + {{category}} +{% endraw %} +``` + +Whereas the basic variable syntax includes an `=` operator: + +```sql +{% raw %} +WHERE + category = {{category}}; +{% endraw %} +``` + +Here, we don't connect the variable to a database field; we merely insert the value into the variable. + +Metabase will read the variable and attach a filter widget to the query, which people can use to change the value inserted into the `category` variable. So if someone enters "Gizmo" into the filter widget, the query Metabase would run would be: + +```sql +SELECT + count(*) +FROM + products +WHERE + category = 'Gizmo'; +``` + +If you're writing a native MongoDB query, your query would look more like this, with the `category` variable being defined inside the `match` clause: + +``` +{% raw %}[{ $match: { category: {{category}} } }]{% endraw %} +``` + +## Basic variable that allows people to select multiple values + +![Basic variable with multiple values](../images/multiple-values.png) + +To let people plug multiple values into your variable, you'll need to write the code in such a way that multiple values will make sense when interpolated into your code. The most common way to do this would be to use an `WHERE` clause with `IN`: + +```sql +{% raw %} +SELECT + * +FROM + products +WHERE + category IN ({{category_vars}}); +{% endraw %} +``` + +With your code in place, you'll need to set the **People can pick** setting to multiple values. In this case, however, you're probably better off using a [field filter](./field-filters). + +## Basic SQL variables offer limited options for filter types + +- **Text**: a plain input box +- **Number**: a plain input box +- **Date**: a simple date picker +- **Boolean**: a this or that picker. + +If you want a more expressive filter widget, like a dynamic date picker, you should use a [field filter variable](./field-filters). + +## Making a variable optional + +See [optional variables](./optional-variables). diff --git a/_docs/master/questions/native-editor/field-filters.md b/_docs/master/questions/native-editor/field-filters.md new file mode 100644 index 0000000000..a50557b236 --- /dev/null +++ b/_docs/master/questions/native-editor/field-filters.md @@ -0,0 +1,153 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Field filters' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/field-filters.md' +layout: new-docs +summary: 'Field filters let you create smart filter widgets for your SQL questions by connecting variables to database fields. Where possible, prefer field filters to basic variables.' +--- + +# Field filters + +## When to use a field filter variable vs a basic variable + +In general, prefer using field filter variables. They offer "smart" filter widgets with dropdown menus and dynamic date pickers. + +If your query lacks a database field for the filter to connect to, however, then you'll instead need to use a [basic variable](./basic-sql-parameters). For example, if you want to filter by a custom column you created, you'd need to use a basic variable. + +## Field filter variables + +To add a field filter: + +1. [Add a variable to a `WHERE` clause](#field-filter-syntax). +2. [Connect the field filter to a database field](#connect-the-field-filter-to-a-database-field). +3. [Configure your filter widget](./sql-parameters#configure-your-filter-widget). + +### Field filter syntax + +Let's say you want to create a field filter variable that filters the `People` table by the `state` field. + +Here's the field filter syntax: + +```sql +{% raw %} +SELECT + * +FROM + PEOPLE +WHERE + {{state}} +{% endraw %} +``` + +Note the lack of the column and operator (it's not `{% raw %}WHERE state = {{state}}{% endraw %}`, it's just `{% raw %}WHERE {{state}}{% endraw %}`). The reason you need to structure field filter variables in this way is to handle cases where Metabase generates the code for you. For example, for handling cases where someone selects _multiple_ values in the filter widget, or a _range_ of dates, Metabase will have to interpolate the SQL code to handle those inputs into the variable. + +In a MongoDB native query, you'll need to put the field filter in a `$match` clause. + +``` +{% raw %}[ {$match: {{date_var}} } ]{% endraw %} +``` + +### Connect the field filter to a database field + +In order for a field filter variable to work, you'll need to associate the variable with a database field. + +1. Go to the variables and parameters side panel. +2. Under **Variable type**, select the "Field filter" variable type. +3. Choose which **Field to map to** your variable (in this case, we'll map the `Category` field in the products table). + +You can only map a field filter to a database field. If you can't use a field filter, you can fall back to using a [basic variable](./basic-sql-parameters). + +## Specifying the table and field alias + +If you map a filter to a field from an aliased table, you'll need to tell Metabase about that alias, or the filter won't work. + +For example, let's say you want to map a field filter to the `category` field from the `products` table, but in your query you use the alias `p` for the `products` table, like so: + +```sql +{% raw %} +SELECT + * +FROM + products AS p +WHERE + {{category_filter}} +{% endraw %} +``` + +If you map to the `category` field from the products table, you'll also need to fill out the **Table and field alias** input to let Metabase know about the alias. In this case, you input `p.category`. + +Setting this **Table and field alias** is only required if your query uses an alias to refer to a table that contains the field you want to map the filter to. + +Here's another example, this time with a CTE + +```sql +{% raw %} +WITH + expensive_products AS ( + SELECT + * + FROM + products + WHERE + price > 50 + ) +SELECT + * +FROM + expensive_products +WHERE + {{category_filter}} +{% endraw %} +``` + +Here, we again map the field filter to the`category` field in the `products` table. But since we use a CTE, aliased as `expensive_products`, we'd need to put `expensive_products.category` in the **Table and field alias** input for the mapping to work correctly. + +## Field filters must be connected to database fields included in the query + +Your main query should be aware of all the tables that your Field Filter variable is pointing to, otherwise you'll get a SQL syntax error. For example, let's say that your main query includes a field filter like this: + +```sql +{% raw %} +SELECT + * +FROM + ORDERS +WHERE + {{ product_category }} +{% endraw %} +``` + +Let's say the `{% raw %}{{ product_category }}{% endraw %}` variable refers to another question that uses the `Products` table. For the field filter to work, you'll need to include a join to `Products` in your main query. + +```sql +{% raw %} +SELECT + * +FROM + ORDERS + JOIN PRODUCTS ON ORDERS.product_id = PRODUCTS.id +WHERE + {{ product_category }} +{% endraw %} +``` + +If you can't use a field filter, you can instead fall back to using a [basic variable](./basic-sql-parameters). + +## Field filters in BigQuery and Oracle + +Make sure your SQL dialect matches the database you've selected. Common issues involving how tables are quoted in the query: + +| Database | Dialect quirk | Example | +| -------- | --------------------------------------------------- | -------------------------- | +| BigQuery | Schemas and tables must be quoted with backticks. | `` FROM `dataset.table` `` | +| Oracle | Schemas and tables must be quoted in double quotes. | `FROM "schema.table"` | + +For more help, see [Troubleshooting SQL error messages](../../troubleshooting-guide/error-message#sql-editor). + +## Making a field filter optional + +See [optional variables](./optional-variables). diff --git a/_docs/master/questions/native-editor/filter-widgets.md b/_docs/master/questions/native-editor/filter-widgets.md new file mode 100644 index 0000000000..b3466c2096 --- /dev/null +++ b/_docs/master/questions/native-editor/filter-widgets.md @@ -0,0 +1,123 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Filter and parameter widgets for native code' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/filter-widgets.md' +layout: new-docs +--- + +# Filter and parameter widgets for native code + +When you add a [SQL variable or parameter](./sql-parameters) to your native/SQL query, Metabase will add a widget to the top of the query that people can use to set the variable's value. + +## How to create different types of filter and parameter widgets + +The kind of filter widget that Metabase displays when you create a field filter widget depends on a setting for that field in Metabase called **Filtering on this field**. Admins can set this field option to: + +- [Input box](#input-box) +- [Search box](#search-box) +- [Dropdown list](#dropdown-menu-and-search) + +Date fields will either have a simple date filter (for date variables) or a dynamic date picker (for field filters mapped to a date field). + +If you want to change the default filter widget for a particular field, you'll need to ask an admin to update that field in [the Table Metadata](../../data-modeling/metadata-editing) and set the desired "Filtering on this field" option. + +For dropdown lists and search boxes, you can also customize values available in the list. See below. + +### Input box + +1. Include a SQL variable in your query. +2. Set the **Variable type** to **Field filter**. If the query lacks a database field, you could use a Text or Number type as well, depending on what you're filtering. +3. Set **Field to map to** to the appropriate field (only if you selected the field filter variable type). +4. Set **Filter widget operator** to whatever [operator](#filter-widget-operators) you want. +5. Set **How should users filter on this variable** to "Input box". + +### Search box + +1. Include a SQL variable in your query. +2. Set the **Variable type** to **Field filter**. If the query lacks a database field, you could use a Text or Number type as well, depending on what you're filtering. +3. Set **Field to map to** to a field of type "Category" (only if you selected the field filter variable type). +4. Set **Filter widget operator** to whatever [operator](#filter-widget-operators) you want. +5. Set **How should users filter on this variable** to "Search box". If you're not using a field filter, you'll need to edit the search box settings to [tell Metabase where to get the values to search](#customizing-values-for-dropdown-lists-and-search-boxes). + +To guard against SQL injection attacks, Metabase converts whatever is in the search box to a string. If you want to use wildcards, check out [our Learn article][sql-variables]. + +### Dropdown menu and search + +To create a dropdown menu with search and a list of all values: + +1. Include a variable in your query. +2. Set the **Variable type** to **Field filter**. If the query lacks a database field, you could use a Text or Number type as well, depending on what you're filtering. +3. Set **Field to map to** to the appropriate field (only if you selected the field filter variable type). +4. Set **Filter widget operator** to whatever [operator](#filter-widget-operators) you want. +5. Set **How should users filter on this variable** to "Dropdown list". If you're not using a field filter, you'll need to edit the dropdown list settings to [tell Metabase where to get the values to list in the dropdown](#customizing-values-for-dropdown-lists-and-search-boxes). + +If there are too many different values in that column to display in a dropdown menu, Metabase will simply display a search box instead. So if you have a lot of email addresses, you may just get a search box anyway. The dropdown menu widgets work better when there's a small set of values to choose from (like the fifty U.S. states). + +## Customizing values for dropdown lists and search boxes + +When you add a dropdown menu or search box, you can tell Metabase which values people can choose from when using a filter with a dropdown list or search box. + +1. Add a dropdown list or search box. +2. Next to the option you chose, click **Edit**. +3. Metabase will pop up a modal where you can select **Where the values should come from**. + +You can choose: + +- **From connected fields**. If you selected the Field filter variable type, you'll also have the option to use the connected field. +- **From another model or question**. If you select this option, you'll need to pick a model or question, then a field from that model or question that Metabase will use to supply the values for that dropdown or search box. For example, if you want the dropdown to list the different plans an account could be on, you could select an "Account" model you created, and select the field "Plan" to power that dropdown. The dropdown would then list all of the distinct plan options that appear in the "Plan" column in the Accounts model. +- **Custom list**. Enter each item on a line. You can enter any string values you like. + +You can also [change a dashboard filter's selectable values](../../dashboards/filters#change-a-filters-selectable-values). + +## Setting a default value in the filter widget + +In the variables sidebar, you can set a default value for your variable. This value will be inserted into the corresponding filter widget by default (even if the filter widget is empty). + +To override the default value, insert a new value into the filter widget. + +## Requiring a value for a filter widget + +In the **Variable** settings sidebar, you can toggle the **Always require a value** option. If you turn this on: + +- You must enter a default value. +- The default value will override any [optional syntax](./optional-variables) in your code (like an optional `WHERE` clause). If no value is passed to the filter, Metabase will run the query using the default value. Click on the **Eye** icon in the editor to preview the SQL Metabase will run. + +## Filter widget operators + +For text, number, and date filter widgets, you'll need to select a filter operator. + +### Text + +Filter operator options include: + +- String +- String is not +- String contains +- String does not contain +- String starts with +- String ends with + +### Number + +Filter operator options include: + +- Equal to +- Not equal to +- Between +- Greater than or equal to +- Less than or equal to + +### Dates + +Filter operator options include: + +- Month and year +- Quarter and year +- Single date +- Date range +- Relative date +- All options. Metabase will give you a menu where you can choose how they filter dates: by range, relative dates, etc. diff --git a/_docs/master/questions/native-editor/optional-variables.md b/_docs/master/questions/native-editor/optional-variables.md new file mode 100644 index 0000000000..f9a349d3f3 --- /dev/null +++ b/_docs/master/questions/native-editor/optional-variables.md @@ -0,0 +1,158 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Optional variables' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/optional-variables.md' +layout: new-docs +summary: 'Make parts of your SQL query optional by wrapping clauses in double brackets.' +--- + +# Optional variables + +You can make a clause optional in a query. For example, you can create an optional `WHERE` clause that contains a [SQL variable](./sql-parameters), so that if no value is supplied to the variable (either in the filter or via the URL), the query will still run as if there were no `WHERE` clause. + +To make a variable optional in your native query, put `[[ .. ]]` brackets around the entire clause containing the `{% raw %}{{variable}}{% endraw %}`. If someone inputs a value in the filter widget for the `variable`, Metabase will place the clause in the template; otherwise Metabase will ignore the clause and run the query as though the clause didn't exist. + +In this example, if no value is given to `cat`, then the query will just select all the rows from the `products` table. But if `cat` does have a value, like "Widget", then the query will only grab the products with a category type of Widget: + +```sql +{% raw %} +SELECT + count(*) +FROM + products +[[WHERE category = {{cat}}]] +{% endraw %} +``` + +### Your SQL must also be able to run without the optional clause in `[[ ]]` + +You need to make sure that your SQL is still valid when no value is passed to the variable in the bracketed clause. + +For example, excluding the `WHERE` keyword from the bracketed clause will cause an error if there's no value given for `cat`: + +```sql +-- this will cause an error: +{% raw %} +SELECT + count(*) +FROM + products +WHERE + [[category = {{cat}}]] +{% endraw %} +``` + +That's because when no value is given for `cat`, Metabase will try to execute SQL as if the clause in `[[ ]]` didn't exist: + +```sql +SELECT + count(*) +FROM + products +WHERE +``` + +Which is not a valid SQL query. Instead, put the entire `WHERE` clause in `[[ ]]`: + +```sql +{% raw %} +SELECT + count(*) +FROM + products +[[WHERE + category = {{cat}}]] +{% endraw %} +``` + +When there's no value given for `cat`, Metabase will still execute a valid query: + +```sql +{% raw %} +SELECT + count(*) +FROM + products +{% endraw %} +``` + +### You need at least one `WHERE` when using multiple optional clauses + +To use multiple optional clauses, you must include at least one regular `WHERE` clause followed by optional clauses, each starting with `AND`: + +```sql +{% raw %} +SELECT + count(*) +FROM + products +WHERE + TRUE + [[AND id = {{id}}]] + [[AND {{category}}]] +{% endraw %} +``` + +That last clause uses a [field filter](./field-filters) (note the lack of a column in the `AND` clause). When using a field filter, you _must_ exclude the column in the query; you need to map the variable in the side panel. + +### Optional variables in MongoDB + +If you're using MongoDB, you can make a clause optional like so: + +``` +{% raw %} +[ + [[{ + $match: {category: {{cat}}} + },]] + { + $count: "Total" + } +] +{% endraw %} +``` + +Or with multiple optional filters: + +``` +{% raw %} +[ + [[{ $match: {{cat}} },]] + [[{ $match: { price: { "$gt": {{minprice}} } } },]] + { + $count: "Total" + } +] +{% endraw %} +``` + +## Setting complex default values in the query + +You can also define default values directly in your query by enclosing comment syntax inside the end brackets of an optional parameter. + +```sql +WHERE column = [[ {% raw %}{{ your_parameter }}{% endraw %} --]] your_default_value +``` + +The comment will "activate" whenever you pass a value to `your_parameter`. + +This is useful when defining complex default values (for example, if your default value is a function like `CURRENT_DATE`). Here's a PostgreSQL example that sets the default value of a Date filter to the current date using `CURRENT_DATE`: + +```sql +{% raw %} +SELECT + * +FROM + orders +WHERE + DATE(created_at) = [[ {{dateOfCreation}} --]] CURRENT_DATE +{% endraw %} +``` + +If you pass a value to the variable, the `WHERE` clause runs, including the comment syntax that comments out the default `CURRENT_DATE` function. + +Note that the hash (`--`) used to comment the text might need to be replaced by the comment syntax specific to the database you're using. diff --git a/_docs/master/questions/native-editor/sql-parameters.md b/_docs/master/questions/native-editor/sql-parameters.md index e3413f60f7..3f93e22909 100644 --- a/_docs/master/questions/native-editor/sql-parameters.md +++ b/_docs/master/questions/native-editor/sql-parameters.md @@ -7,442 +7,93 @@ category: Questions title: 'SQL parameters' source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/sql-parameters.md' layout: new-docs +summary: 'Create SQL templates by adding filters and parameters to your SQL questions in the native code editor.' redirect_from: - /docs/master/users-guide/13-sql-parameters --- # SQL parameters -You can create SQL templates by adding variables to your SQL queries in the [Native/SQL editor][sql-editor]. These variables will create filter widgets that you can use to change the variable's value in the query. You can also add parameters to your question's URL to set the filters' values, so that when the question loads, those values are inserted into the variables. +![Variables](../images/filter-and-parameter.png) -![Variables](../images/02-widget.png) +You can create SQL templates by adding parameters (a.k.a. variables) to your SQL queries in the [Native/SQL editor](./writing-sql). -## Defining variables +These variables create widgets that people can use to plug in values for those variables. You can also connect [dashboard widgets to these parameters](../../dashboards/filters). -Typing `{% raw %}{{variable_name}}{% endraw %}` in your native query creates a variable called `variable_name`. +## SQL variable types -Field Filters, a special type of filter, have a [slightly different syntax](#field-filter-syntax). +When you define a variable, the **variables and parameters** side panel will appear. You can set a type for a variable, which changes the kind of filter widget that Metabase presents. -This example defines a **Text** variable called `category`: +Variable types include: -```sql -{% raw %} -SELECT - count(*) -FROM - products -WHERE - category = {{category}} -{% endraw %} -``` +- **[Field filter variables](./field-filters)**: create "smart" filter widgets with date pickers or dropdown menus. To use a field filter, you'll need to connect to a database field included in your query. +- **[Basic variables](./basic-sql-parameters)**: text, number, and date variables. You'll almost always want to use field filters instead of these basic variables, as field filters create "smart" filter widgets, but Metabase provides these basic variables for situations where you can't use field filters. +- **[Time grouping parameters](./time-grouping-parameters)**: allows people to change how the results are grouped by a date column: by month, week, day, etc. -Metabase will read the variable and attach a filter widget to the query, which people can use to change the value inserted into the `cat` variable with quotes. So if someone entered "Gizmo" into the filter widget, the query Metabase would run would be: +You can include multiple variables in a single query, and Metabase will add multiple widgets to the question. To rearrange the order of the widgets, enter edit mode and click on any widget and drag it around. -```sql -SELECT - count(*) -FROM - products -WHERE - category = 'Gizmo' -``` +### Configure your filter widget -If you're writing a native MongoDB query, your query would look more like this, with the `cat` variable being defined inside of the `match` clause. +When you add a field filter variable or basic variable to your SQL code, you'll need to configure it in the sidebar. -``` -{% raw %}[{ $match: { category: {{cat}} } }]{% endraw %} -``` +1. Set the **Filter widget type**. Options will differ depending on whether you used a [field filter](./field-filters) (preferred) or a [basic variable](./basic-sql-parameters) (if you can't use a field filter). +2. Set the **Filter widget** label. +3. Set **How should users filter on this variable?**: + - [Dropdown list](../../dashboards/filters#dropdown-list). A dropdown list shows all available values for the field in a selectable list. + - [Search box](../../dashboards/filters#search-box). A search box allows people to type to search for specific values. + - [Input box](../../dashboards/filters#plain-input-box). An input box provides a simple text field for entering values. +4. If the filter is mapped to a field in an aliased table, you'll need to [specify the table and field alias](./field-filters#specifying-the-table-and-field-alias). +5. Optionally, set a **Default filter widget value**. + +Check out [filter widgets](./filter-widgets). -## Setting SQL variables +## Setting values for SQL variables To set a SQL variable to a value, you can either: -- Enter a value into the filter widget, and re-run the question, or +- Enter a value into the [filter widget](./filter-widgets), and re-run the question. - Add a parameter to the URL and load the page. +### Setting a parameter via URL + To add a value to the URL, follow this syntax: ``` ?variable_name=value ``` -For example, to set the `{% raw %}{{cat}}{%endraw%}` variable on a question to the value "Gizmo", your URL would look something like: +For example, to set the `{% raw %}{{category}}{%endraw%}` variable on a question to the value "Gizmo", your URL would look something like: ``` -https://metabase.example.com/question/42-eg-question?cat=Gizmo +https://metabase.example.com/question/42-eg-question?category=Gizmo ``` To set multiple variables, separate parameters with an ampersand (`&`): ``` -https://metabase.example.com/question/42-eg-question?cat=Gizmo&maxprice=50 -``` - -## SQL variable types - -When you define a variable, the **Variables** side panel will appear. You can set a type for a variable, which changes the kind of filter widget that Metabase presents. - -There are four types of variables: - -- **Text**: a plain input box. -- **Number**: a plain input box. -- **Date**: a simple date picker. If you want a more expressive date picker, like specifying a range, you'll want to use a Field Filter. -- **[Field Filter](#the-field-filter-variable-type)**: different filter widgets, depending on the mapped field. - -That last variable type, [Field Filter](#the-field-filter-variable-type), is special; it lets you create "smart" filter widgets, like a search box, or a dropdown menu of values, or a dynamic date picker that allows you to specify a date range. - -You can include multiple variables in the query, and Metabase will add multiple filter widgets to the question. When you have multiple filter widgets, you can click on a filter widget and drag it around to rearrange the order. - -## The Field Filter variable type - -Setting a variable to the **Field Filter** type allows you to map the variable to a field in any table in the current database. Field filters let you create a "smart" filter widget that makes sense for that field. - -Field Filter variables should be used inside of a `WHERE` clause in SQL, or a `$match` clause in MongoDB. - -### Field Filter compatible types - -Field Filters ONLY work with the following field types: - -- Category -- Entity Name -- Entity Key -- Foreign Key -- City -- State -- ZIP or Postal Code - -The field can also be a date or timestamp, which can be left as "No semantic type" in the [Table Metadata](../../data-modeling/metadata-editing). - -When you set the **Variable type** to "Field Filter", Metabase will present an option to set the **Field to map to**, as well as the **Filter widget type**. The options available for the Filter widget type depend on the field's type. For example, if you map to a field of type Category, you'll see options for either "Category" or None. If you map to a Date Field, you'll see options for None, Month and year, Quarter and year, Single date, Date range, or Date filter. - -If you're not seeing the option to display a filter widget, make sure the mapped field is set to one of the above types, and then try manually syncing your database from the "Databases" section of the Admin Panel to force Metabase to scan and cache the field's values. - -If you want to map a Field Filter to a field that isn't one of the compatible types listed above, you'll need an Admin to change the field type for that column. See [metadata editing](../../data-modeling/metadata-editing). - -## Field Filter syntax - -Let's say you want to create a Field Filter that filters the `People` table by state, and you want people to be able to select multiple states at a time. Here's the query: - -The syntax for Field Filters differs from a Text, Number, or Date variable. - -```sql -{% raw %} -SELECT - * -FROM - PEOPLE -WHERE - {{state}} -{% endraw %} -``` - -Then, in the side panel, select the "Field Filter" variable type, and choose which field to map your variable to (in this case, `State`). - -Note the lack of the column and operator (like `=`). The reason you need to structure Field Filters this way is to handle cases where Metabase generates the code for you. For example, for handling cases where someone selects multiple values in the filter widget, or a range of dates. With Field Filters, you can't control the generated SQL, so if you need greater control, you should use one (or more) Text, Number, or Date variables. - -A MongoDB native query example might look like this: - -``` -{% raw %}[ {$match: {{date_var}} } ]{% endraw %} -``` - -For a more in-depth guide, check out [Field Filters: create smart filter widgets for SQL questions][field-filter]. - -### Field filters in BigQuery and Oracle - -Make sure your SQL dialect matches the database you've selected. Common issues involving how tables are quoted in the query: - -| Database | Dialect quirk | Example | -| -------- | --------------------------------------------------- | -------------------------- | -| BigQuery | Schemas and tables must be quoted with backticks. | `` FROM `dataset.table` `` | -| Oracle | Schemas and tables must be quoted in double quotes. | `FROM "schema.table"` | - -For more help, see [Troubleshooting SQL error messages](../../troubleshooting-guide/error-message#sql-editor). - -## How to create different types of filter widgets - -The kind of filter widget that Metabase displays when you create a Field Filter widget depends on a setting for that field in Metabase called **Filtering on this field**. Admins can set this field option to: - -- Plain input box -- Search box -- A list of all values (also known as a dropdown menu) - -Date fields will either have a simple date filter (for Date variables) or a dynamic date picker (for Field Filters mapped to a date field). - -If you want to change the filter widget for a particular field, you'll need to ask an Admin to update that field in [the Table Metadata](../../data-modeling/metadata-editing) and set the desired "Filtering on this field" option. - -### Filter widget with plain input box - -Create a simple **Text** or **Number** variable. Additionally, you can use a Field Filter with a field that has its **Filtering on this field** value set to "Plain input box". - -Note: to guard against SQL injection attacks, Metabase converts whatever is in the Search box to a string. If you want to use wildcards, check out [our Learn article][sql-variables]. - -### Filter widget with search box - -- Include a SQL variable in your query. -- Set the **Variable type** to **Field Filter**. -- Set the **Field to map to** to a field of type "Category" that has its **Filtering on this field** option set to "Search box" - -### Filter widget with dropdown menu and search - -To create a dropdown menu with search and a list of all values, you need to: - -- Include a SQL variable in your query. -- Set the **Variable type** to **Field Filter**. -- Set the **Field to map to** to a field of type "Category" that has its **Filtering on this field** option set to "A list of all values". -- Set the **Filter widget type** to "Category". - -If the field you want to create a dropdown for is not set to the type "Category" with **Filtering on this field** set to "A list of all values", an Admin will need to update the settings for that field. For example, if you want to create a dropdown menu for an incompatible field type like an Email field, an admin will need to change that field type to "Category", set the **Filtering on this field** option to **A list of all values**, then re-scan the values for that field. - -If however, there are too many different values in that column to display in a dropdown menu, Metabase will simply display a search box instead. So if you have a lot of email addresses, you may just get a search box anyway. The dropdown menu widgets work better when there's a small set of values to choose from (like the fifty U.S. states). - -## Field filter limitations - -Some things that could trip you up when trying to set up a Field Filter variable. - -### Field Filters don't work with table aliases - -You won't be able to select values from field filters in queries that use table aliases for joins or CTEs. - -The reason is that field filters generate SQL based on the mapped field; Metabase doesn't parse the SQL, so it can't tell what an alias refers to. You have three options for workarounds, depending on the complexity of your query. - -1. Use full table names. -2. Replace CTEs with subqueries. -3. Create a view in your database, and use the view as the basis of your query. - -### Field Filters must be connected to fields included in the query - -Your main query should be aware of all the tables that your Field Filter variable is pointing to, otherwise you'll get a SQL syntax error. For example, let's say that your main query includes a field filter like this: - -```sql -{% raw %} -SELECT - * -FROM - ORDERS -WHERE - {{ product_category }} -{% endraw %} -``` - -Let's say the `{% raw %}{{ product_category }}{% endraw %}` variable refers to another question that uses the `Products` table. For the field filter to work, you'll need to include a join to `Products` in your main query. - -```sql -{% raw %} -SELECT - * -FROM - ORDERS - JOIN PRODUCTS ON ORDERS.product_id = PRODUCTS.id -WHERE - {{ product_category }} -{% endraw %} -``` - -## Customizing dropdown lists and search box values - -With Text and Field filter variables, you can tell Metabase what values people can choose from when using a filter with a dropdown list or search box. - -1. In the native editor, add a {% raw %}{{variable}}{% endraw %} in double braces. -2. If the sidebar doesn't open, you can click on the **{x}** icon on the right to open the **Variables** sidebar. -3. In the **Settings** tab, set the **Variable type** to either "Text" or "Field Filter". -4. In the sidebar, go to **How should users filter on this variable?** Pick either **Dropdown list** or **Search box**. -5. Next to the option you chose, click **Edit**. -6. Metabase will pop up a modal where you can select **Where the values should come from**. - -You can choose: - -- **From connected fields** If you selected the Field filter variable type, you'll also have the option to use the connected field. -- **From another model or question**. If you select this option, you'll need to pick a model or question, then a field from that model or question that Metabase will use to supply the values for that dropdown or search box. For example, if you want the dropdown to list the different plans an account could be on, you could select an "Account" model you created, and select the field "Plan" to power that dropdown. The dropdown would then list all of the distinct plan options that appear in the "Plan" column in the Accounts model. -- **Custom list**. Enter each item on a line. You can enter any string values you like. - -You can also [change a dashboard filter's selectable values](../../dashboards/filters#change-a-filters-selectable-values). - -## Setting a default value in the filter widget - -In the variables sidebar, you can set a default value for your variable. This value will be inserted into the corresponding filter widget by default (even if the filter widget is empty). You'll need to insert a new value into the filter widget to override the default. - -## Setting complex default values in the query - -You can also define default values directly in your query by enclosing comment syntax inside the end brackets of an optional parameter. - -```sql -WHERE column = [[ {% raw %}{{ your_parameter }}{% endraw %} --]] your_default_value -``` - -The comment will "activate" whenever you pass a value to `your_parameter`. - -This is useful when defining complex default values (for example, if your default value is a function like `CURRENT_DATE`). Here's a PostgreSQL example that sets the default value of a Date filter to the current date using `CURRENT_DATE`: - -```sql -{% raw %} -SELECT - * -FROM - orders -WHERE - DATE(created_at) = [[ {{dateOfCreation}} --]] CURRENT_DATE -{% endraw %} -``` - -If you pass a value to the variable, the `WHERE` clause runs, including the comment syntax that comments out the default `CURRENT_DATE` function. - -Note that the hash (`--`) used to comment the text might need to be replaced by the comment syntax specific to the database you're using. - -## Requiring a value for a filter widget - -In the **Variable** settings sidebar, you can toggle the **Always require a value** option. If you turn this on: - -- You must enter a default value. -- The default value will override any optional syntax in your code (like an optional `WHERE` clause). If no value is passed to the filter, Metabase will run the query using the default value. Click on the **Eye** icon in the editor to preview the SQL Metabase will run. - -## Making variables optional - -You can make a clause optional in a query. For example, you can create an optional `WHERE` clause that contains a SQL variable, so that if no value is supplied to the variable (either in the filter or via the URL), the query will still run as if there were no `WHERE` clause. - -To make a variable optional in your native query, put `[[ .. ]]` brackets around the entire clause containing the `{% raw %}{{variable}}{% endraw %}`. If someone inputs a value in the filter widget for the `variable`, Metabase will place the clause in the template; otherwise Metabase will ignore the clause and run the query as though the clause didn't exist. - -In this example, if no value is given to `cat`, then the query will just select all the rows from the `products` table. But if `cat` does have a value, like "Widget", then the query will only grab the products with a category type of Widget: - -```sql -{% raw %} -SELECT - count(*) -FROM - products -[[WHERE category = {{cat}}]] -{% endraw %} -``` - -### Your SQL must also be able to run without the optional clause in `[[ ]]` - -You need to make sure that your SQL is still valid when no value is passed to the variable in the bracketed clause. - -For example, excluding the `WHERE` keyword from the bracketed clause will cause an error if there's no value given for `cat`: - -```sql --- this will cause an error: -{% raw %} -SELECT - count(*) -FROM - products -WHERE - [[category = {{cat}}]] -{% endraw %} -``` - -That's because when no value is given for `cat`, Metabase will try to execute SQL as if the clause in `[[ ]]` didn't exist: - -```sql -SELECT - count(*) -FROM - products -WHERE -``` - -which is not a valid SQL query. - -Instead, put the entire `WHERE` clause in `[[ ]]`: - -```sql -{% raw %} -SELECT - count(*) -FROM - products -[[WHERE - category = {{cat}}]] -{% endraw %} -``` - -When there's no value given for `cat`, Metabase will just execute: - -```sql -{% raw %} -SELECT - count(*) -FROM - products -{% endraw %} -``` - -which is still a valid query. - -### You need at least one `WHERE` when using multiple optional clauses - -To use multiple optional clauses, you must include at least one regular `WHERE` clause followed by optional clauses, each starting with `AND`: - -```sql -{% raw %} -SELECT - count(*) -FROM - products -WHERE - TRUE - [[AND id = {{id}}] - [[AND {{category}}]] -{% endraw %} -``` - -That last clause uses a Field filter (note the lack of a column in the `AND` clause). When using a field filter, you must exclude the column in the query; you need to map the variable in the side panel. - -### Optional variables in MongoDB - -If you're using MongoDB, you can make an clause optional like so: - -``` -{% raw %} -[ - [[{ - $match: {category: {{cat}}} - },]] - { - $count: "Total" - } -] -{% endraw %} -``` - -Or with multiple optional filters: - -``` -{% raw %} -[ - [[{ $match: {{cat}} },]] - [[{ $match: { price: { "$gt": {{minprice}} } } },]] - { - $count: "Total" - } -] -{% endraw %} +https://metabase.example.com/question/42-eg-question?category=Gizmo&maxprice=50 ``` ## Connecting a SQL question to a dashboard filter -In order for a saved SQL/native question to be usable with a dashboard filter, the question must contain at least one variable. +In order for a SQL/native question to be usable with a [dashboard filter](../../dashboards/filters), the question must contain at least one variable or parameter. -The kind of dashboard filter that can be used with the SQL question depends on the field. For example, if you have a field filter called `{% raw %}{{var}}{% endraw %}` and you map it to a State field, you can map a Location dashboard filter to your SQL question. In this example, you'd create a new dashboard (or go to an existing dashboard), click the **Pencil icon** to enter **Dashboard edit mode**, add the SQL question that contains your State Field Filter variable, add a new dashboard filter (or edit an existing Location filter), then click the dropdown on the SQL question card to see the State Field Filter. +The kind of dashboard filter that can be used with the SQL question depends on the field. For example, if you have a field filter called `{% raw %}{{var}}{% endraw %}` and you map it to a field with State semantic type, you can map a location dashboard filter to your SQL question. In this example, you'd: -If you add a **Date** variable to the question, then it's only possible to use the dashboard filter option **Single Date**. So if you are trying to use one of the other Time options on the dashboard, you'll need to change the variable to a [Field Filter](#the-field-filter-variable-type) variable and map it to a date column. +1. Create a new dashboard (or go to an existing dashboard). +2. Click the **Pencil icon** to enter **Dashboard edit mode**. +3. Add the SQL question that contains your `State` field filter. +4. Add a new dashboard filter (or edit an existing Location filter). +5. Click the dropdown on the SQL question card to connect the widget to the `State` field filter. -![Field filter](../images/state-field-filter.png) +If you add a basic **Date** variable to the question (i.e., not a field filter), then it's only possible to use the dashboard filter option **Single Date**. So if you're trying to use one of the other Time options on the dashboard, you'll need to change the variable to a [field filter](./field-filters) and map it to a date field. -More on [Dashboard filters][dashboard-filters]. +![Field filter](../images/state-field-filter.png) ## Further reading -- [Create filter widgets for charts using SQL variables][sql-variables]. -- [Field Filters: create smart filter widgets for SQL questions][field-filter]. -- [Troubleshooting SQL][troubleshooting-sql]. -- [Troubleshooting filters][troubleshooting-filters]. -- [Dashboard filters][dashboard-filters]. - -[sql-editor]: ./writing-sql -[dashboard-filters]: ../../dashboards/filters -[field-filter]: /learn/metabase-basics/querying-and-dashboards/sql-in-metabase/field-filters -[sql-variables]: /learn/metabase-basics/querying-and-dashboards/sql-in-metabase/sql-variables -[troubleshooting-filters]: ../../troubleshooting-guide/filters -[troubleshooting-sql]: ../../troubleshooting-guide/sql +- [Create filter widgets for charts using SQL variables](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/sql-variables). +- [Field Filters: create smart filter widgets for SQL questions](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/field-filters). +- [Troubleshooting SQL](../../troubleshooting-guide/sql). +- [Troubleshooting filters](../../troubleshooting-guide/filters). +- [Dashboard filters](../../dashboards/filters). diff --git a/_docs/master/questions/native-editor/time-grouping-parameters.md b/_docs/master/questions/native-editor/time-grouping-parameters.md new file mode 100644 index 0000000000..b6f2b9af1d --- /dev/null +++ b/_docs/master/questions/native-editor/time-grouping-parameters.md @@ -0,0 +1,62 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Time grouping parameter' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/native-editor/time-grouping-parameters.md' +layout: new-docs +--- + +# Time grouping parameter + +You can add a parameter to SQL questions to change how results are grouped by time: by day, week, month, and so on. + +To add a time grouping parameter, you'll need: + +- An aggregation (like `COUNT`). +- A parameter in the `SELECT` clause +- That same parameter in the `GROUP BY` clause. + +## Time grouping parameter example + +Here's an example that counts the number of orders in the `orders` table and inserts a parameter to allow people to change how Metabase groups the results by the `created_at` column. + +```sql +{% raw %} +SELECT + COUNT(*) AS "Orders", + {{mb.time_grouping("Time grouping", "created_at")}} AS "Created At" +FROM + orders +GROUP BY + {{mb.time_grouping("Time grouping", "created_at")}} +{% endraw %} +``` + +Like in all SQL groupings, you must include the parameter in both the `SELECT` and `GROUP BY` clauses. You can also use the `mb.time_grouping` function on different columns in the same query, like this: + +```sql +SELECT + COUNT(*) AS "Count", + {{created_at_param}} AS "Created at", + {{trial_ends_at}} AS "Trial ends at" +FROM + accounts +GROUP BY + {{created_at_param}}, + {{trial_ends_at}} +``` + +Like with all parameters, you can set a default value (e.g., "month"). With time grouping parameters, you're limited to the options for the [time grouping parameter](../../dashboards/filters#time-grouping-parameter). + +If people don't set a value for the parameter, Metabase won't group to a date part (like day or week). It will just group by untruncated dates. + +## Handling aliases + +Just like with field filters, if you alias a table, then map a time grouping parameter to a field in that aliased table, you'll need to [tell Metabase about the table and field alias](./field-filters#specifying-the-table-and-field-alias). + +## Connecting to a dashboard filter + +See [dashboard filters and parameters](../../dashboards/filters). diff --git a/_docs/master/questions/native-editor/writing-sql.md b/_docs/master/questions/native-editor/writing-sql.md index fa19e2a2da..e1730755b2 100644 --- a/_docs/master/questions/native-editor/writing-sql.md +++ b/_docs/master/questions/native-editor/writing-sql.md @@ -129,7 +129,7 @@ See [Caching question policies](../../configuring-metabase/caching#question-cach [learn-sql]: /learn/sql/working-with-sql [ref-models]: ./referencing-saved-questions-in-queries -[sample-database-gloss]: /glossary/sample_database +[sample-database-gloss]: /glossary/sample-database [sql-gloss]: /glossary/sql [troubleshooting-sql]: ../../troubleshooting-guide/sql [variable-gloss]: /glossary/variable diff --git a/_docs/master/questions/query-builder/expressions/converttimezone.md b/_docs/master/questions/query-builder/expressions/converttimezone.md index 24d1478c71..30aed11ce7 100644 --- a/_docs/master/questions/query-builder/expressions/converttimezone.md +++ b/_docs/master/questions/query-builder/expressions/converttimezone.md @@ -194,7 +194,7 @@ This section covers functions and formulas that work the same way as the Metabas ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. If our [timestamp sample data](#creating-custom-report-dates) is a `timestamp without time zone` stored in a PostgreSQL database: diff --git a/_docs/master/questions/query-builder/expressions/countif.md b/_docs/master/questions/query-builder/expressions/countif.md index f6ed404aa1..34e0d49b2f 100644 --- a/_docs/master/questions/query-builder/expressions/countif.md +++ b/_docs/master/questions/query-builder/expressions/countif.md @@ -172,7 +172,7 @@ You'll also need to set the **Group by** column to "Created Date: Month". ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. If our [sample data](#multiple-conditions) is stored in a PostgreSQL database, the SQL query: diff --git a/_docs/master/questions/query-builder/expressions/datetimeadd.md b/_docs/master/questions/query-builder/expressions/datetimeadd.md index fef76b5b36..6ebb99a2c0 100644 --- a/_docs/master/questions/query-builder/expressions/datetimeadd.md +++ b/_docs/master/questions/query-builder/expressions/datetimeadd.md @@ -128,7 +128,7 @@ datetimeAdd([Opened On], 14, "day") ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. If our [coffee sample data](#calculating-an-end-date) is stored in a PostgreSQL database: diff --git a/_docs/master/questions/query-builder/expressions/datetimediff.md b/_docs/master/questions/query-builder/expressions/datetimediff.md index b1981a10c6..7a8578568b 100644 --- a/_docs/master/questions/query-builder/expressions/datetimediff.md +++ b/_docs/master/questions/query-builder/expressions/datetimediff.md @@ -95,7 +95,7 @@ This section covers functions and formulas that work the same way as the Metabas ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. If our [cheese sample data](#calculating-age) is stored in a PostgreSQL database: diff --git a/_docs/master/questions/query-builder/expressions/datetimesubtract.md b/_docs/master/questions/query-builder/expressions/datetimesubtract.md index a5ae46dce0..798d29c4dd 100644 --- a/_docs/master/questions/query-builder/expressions/datetimesubtract.md +++ b/_docs/master/questions/query-builder/expressions/datetimesubtract.md @@ -128,7 +128,7 @@ datetimeSubtract([Arrive By], 30, "minute") ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results. If our [events sample data](#calculating-a-start-date) is stored in a PostgreSQL database: diff --git a/_docs/master/questions/query-builder/expressions/isempty.md b/_docs/master/questions/query-builder/expressions/isempty.md index 441bb9e8a9..6ef177a4d8 100644 --- a/_docs/master/questions/query-builder/expressions/isempty.md +++ b/_docs/master/questions/query-builder/expressions/isempty.md @@ -140,6 +140,6 @@ case(isEmpty([Feedback]), "No feedback.", [Feedback]) [custom-expressions-doc]: ../expressions [custom-expressions-learn]: /learn/metabase-basics/querying-and-dashboards/questions/custom-expressions [data-types]: /learn/grow-your-data-skills/data-fundamentals/data-types-overview#examples-of-data-types -[notebook-editor-def]: /glossary/query_builder +[notebook-editor-def]: /glossary/query-builder [numpy]: https://numpy.org/doc/ [pandas]: https://pandas.pydata.org/pandas-docs/stable/ diff --git a/_docs/master/questions/query-builder/expressions/isnull.md b/_docs/master/questions/query-builder/expressions/isnull.md index b8702b3c24..2fc4c27cd9 100644 --- a/_docs/master/questions/query-builder/expressions/isnull.md +++ b/_docs/master/questions/query-builder/expressions/isnull.md @@ -148,6 +148,6 @@ case(isNull([Feedback]), "Unknown feedback.", [Feedback]) [custom-expressions-doc]: ../expressions [custom-expressions-learn]: /learn/metabase-basics/querying-and-dashboards/questions/custom-expressions [data-types]: /learn/grow-your-data-skills/data-fundamentals/data-types-overview#examples-of-data-types -[notebook-editor-def]: /glossary/query_builder +[notebook-editor-def]: /glossary/query-builder [numpy]: https://numpy.org/doc/ [pandas]: https://pandas.pydata.org/pandas-docs/stable/ diff --git a/_docs/master/questions/query-builder/expressions/now.md b/_docs/master/questions/query-builder/expressions/now.md index af25882257..dfabb5647c 100644 --- a/_docs/master/questions/query-builder/expressions/now.md +++ b/_docs/master/questions/query-builder/expressions/now.md @@ -83,7 +83,7 @@ Different ways to do the same thing, because while you'd love to use custom expr ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. By default, `now` uses your Metabase's [report time zone](../../../configuring-metabase/localization#report-timezone). If your admin hasn't set a report time zone, `now` will use your database's time zone. diff --git a/_docs/master/questions/query-builder/expressions/sumif.md b/_docs/master/questions/query-builder/expressions/sumif.md index 51c3cd5d74..08a98f0056 100644 --- a/_docs/master/questions/query-builder/expressions/sumif.md +++ b/_docs/master/questions/query-builder/expressions/sumif.md @@ -185,7 +185,7 @@ Don't forget to set the **Group by** column to "Date Received: Month". ### SQL -When you run a question using the [query builder](/glossary/query_builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. +When you run a question using the [query builder](/glossary/query-builder), Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results. If our [payment sample data](#sumif) is stored in a PostgreSQL database, the SQL query: diff --git a/_docs/master/questions/query-builder/join.md b/_docs/master/questions/query-builder/join.md index df1e647967..9ea8487df5 100644 --- a/_docs/master/questions/query-builder/join.md +++ b/_docs/master/questions/query-builder/join.md @@ -7,6 +7,7 @@ category: Questions title: 'Joining data' source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/query-builder/join.md' layout: new-docs +summary: 'Learn how to combine data from different tables using joins. We''ll show you how to pick tables, match columns, and choose the right join type.' redirect_from: - /docs/master/users-guide/join --- @@ -17,26 +18,26 @@ redirect_from: You can [join data][join] to combine your current data with another table, or even with a saved question. -After you click on the Join Data button to add a join step, you'll need to pick the data (from the same database) that you want to join. You can only pick tables and saved questions that are from the same database as your starting data. +After you click the "Join Data" button to add a join step, you'll need to pick the data (from the same database) that you want to join. You can only pick tables and saved questions that are from the same database as your starting data. ![Picking the data to join](../images/join-pick-data.png) -Next, you'll need to pick the columns you want to join on. This means you pick a column from the first table, and a column from the second table, and the join will stitch rows together where the value from the first column is equal to the value in the second column. A very common example is to join on an ID column in each table, so if you happened to pick a table to join on where there is a foreign key relationship between the tables, Metabase will automatically pick those corresponding ID columns for you. At the end of your join step, there's a `Columns` button you can click to choose which columns you want to include from the joined data. +Next, you'll need to pick the columns you want to join on. This means you pick a column from the first table and a column from the second table, and the join will stitch rows together where the value from the first column equals the value in the second column. A very common example is joining on an ID column in each table. If you pick a table to join where there's a foreign key relationship between the tables, Metabase will automatically pick those corresponding ID columns for you. At the end of your join step, there's a "Columns" button you can click to choose which columns you want to include from the joined data. -By default, Metabase will do a left outer join, but you can click on the Venn diagram icon to select a different type of join. Not all databases support all types of joins, so Metabase will only display the options supported by the database you're using. +By default, Metabase will do a left outer join, but you can click the Venn diagram icon to select a different type of join. Not all databases support all types of joins, so Metabase will only display the options supported by the database you're using. Here are the basic types of joins: -- **Left outer join:** select all records from Table A, along with records from Table B that meet the join condition, if any. -- **Right outer join:** select all records from Table B, along with records from Table A that meet the join condition, if any. -- **Inner join:** only select the records from Table A and B where the join condition is met. -- **Full outer join:** select all records from both tables, whether or not the join condition is met. +- **Left outer join:** Select all records from Table A, along with records from Table B that meet the join condition, if any. +- **Right outer join:** Select all records from Table B, along with records from Table A that meet the join condition, if any. +- **Inner join:** Only select the records from Table A and B where the join condition is met. +- **Full outer join:** Select all records from both tables, whether or not the join condition is met. -**A left outer join example:** If Table A is Orders and Table B is Customers, and assuming you do a join where the `customer_id` column in Orders is equal to the `ID` column in Customers, when you do a left outer join your results will be a full list of all your orders, and each order row will also display the columns of the customer who placed that order. Since a single customer can place many orders, a given customer's information might be repeated many times for different order rows. If there isn't a corresponding customer for a given order, the order's information will be shown, but the customer columns will just be blank for that row. +**A left outer join example:** If Table A is Orders and Table B is Customers, and you do a join where the `customer_id` column in Orders equals the `ID` column in Customers, when you do a left outer join your results will be a full list of all your orders, and each order row will also display the columns of the customer who placed that order. Since a single customer can place many orders, a given customer's information might be repeated many times for different order rows. If there isn't a corresponding customer for a given order, the order's information will be shown, but the customer columns will just be blank for that row. ## Multiple stages of joins -In many cases you might have tables A, B, and C, where A and B have a connection, and B and C have a connection, but A and C don't. If you want to join A to B to C, all you have to do is add multiple join steps. Click on Join Data, join table A to table B, then click the Join Data step below that completed join block to add a second join step, and join the results of your last join to table C. +In many cases you might have tables A, B, and C, where A and B have a connection, and B and C have a connection, but A and C don't. If you want to join A to B to C, all you have to do is add multiple join steps. Click "Join Data," join table A to table B, then click the "Join Data" step below that completed join block to add a second join step, and join the results of your last join to table C. ![An A to B to C join](../images/join-a-b-c.png) @@ -59,10 +60,42 @@ You can join tables on comparison conditions like: ![Join operators](../images/join-operator.png) +## Joins with custom expressions + +Sometimes you want to join data using constant values, relative dates, or some other custom conditions. + +For example, let's say you have a table of reviews and want to add a column that includes the average rating for all products. + +You could first calculate the average rating, then join the result to the reviews table on `1=1`. + +![Join with custom expression](../images/join-with-custom-expression.png) + +To use a custom expression to define a join key: + +1. Click on one of the join keys. +2. Select **custom expression**. +3. Enter your expression (including a constant like `1`). +4. Click **Done**. + +Another example: Let's say you have: + + - A `customers` table that stores names under `first_name` and `last_name` + - An `accounts` table that stores first and last names in a single column, `full_name` + +You could join those tables using a custom expression. The join key for the `customers` table would look something like: + +``` +concat([first_name], " ", [last_name]) +``` + +And the join key for the `accounts` table would simply be the `full_name` column. + +Take a look at our [list of expressions](./expressions-list). + ## Further reading - [Joins in Metabase][join] -- [Type of joins][join-types] +- [Types of joins][join-types] [join]: /learn/metabase-basics/querying-and-dashboards/questions/joins-in-metabase [join-types]: /learn/sql/working-with-sql/sql-join-types diff --git a/_docs/master/questions/start.md b/_docs/master/questions/start.md index 9c0fc8bfa9..57009c77e1 100644 --- a/_docs/master/questions/start.md +++ b/_docs/master/questions/start.md @@ -49,6 +49,30 @@ Write native code (like SQL) to query your data source. Pass parameters into variables in your SQL templates. +### [Field filters](./native-editor/field-filters) + +Create smart filter widgets by connecting field filter variables to fields in your database. + +### [Basic SQL parameters](./native-editor/basic-sql-parameters) + +Learn the basics of using parameters in SQL queries. + +### [Optional variables](./native-editor/optional-variables) + +Use brackets to create parameters that can be left empty in your queries. + +### [Time grouping parameters](./native-editor/time-grouping-parameters) + +Group your data by time periods using parameters in native queries. + +### [Filter widgets](./native-editor/filter-widgets) + +Configure filter widgets connected to variables in your native queries. + +### [Referencing saved questions in queries](./native-editor/referencing-saved-questions-in-queries) + +Use saved questions as data sources in your native queries. + ### [Snippets](./native-editor/snippets) Reuse and share bits of SQL. diff --git a/_docs/master/troubleshooting-guide/filters.md b/_docs/master/troubleshooting-guide/filters.md index 097e5c8cea..92ed0eea69 100644 --- a/_docs/master/troubleshooting-guide/filters.md +++ b/_docs/master/troubleshooting-guide/filters.md @@ -47,7 +47,7 @@ If a question filter is giving you no results or the wrong results: If you're having trouble filtering on a: - [Custom column](../questions/query-builder/editor#custom-columns): check if the custom expression is working as expected. For example, your custom expression might be returning blank values when you expect numbers. -- [SQL field filter](../questions/native-editor/sql-parameters#the-field-filter-variable-type): make sure you're using the correct [field filter syntax](../questions/native-editor/sql-parameters#field-filter-syntax), then see [Troubleshooting SQL variables](./sql#sql-variables-and-field-filters). +- [SQL field filter](../questions/native-editor/field-filters): make sure you're using the correct [field filter syntax](../questions/native-editor/field-filters#field-filter-syntax), then see [Troubleshooting SQL variables](./sql#sql-variables-and-field-filters). **Explanation** @@ -85,7 +85,7 @@ Timestamps, in particular, are the root of all evil, so please be patient with y ## Field filters in BigQuery and Oracle -If you are getting an error when using field filters with BigQuery or Oracle, make sure you use the correct syntax for the `FROM` clause. See [Field filters in BigQuery and Oracle](../questions/native-editor/sql-parameters#field-filters-in-bigquery-and-oracle). +If you are getting an error when using field filters with BigQuery or Oracle, make sure you use the correct syntax for the `FROM` clause. See [Field filters in BigQuery and Oracle](../questions/native-editor/field-filters#field-filters-in-bigquery-and-oracle). ## Missing or incorrect filter values diff --git a/_docs/master/troubleshooting-guide/linked-filters.md b/_docs/master/troubleshooting-guide/linked-filters.md index 2313faf8a6..563d7fbd5c 100644 --- a/_docs/master/troubleshooting-guide/linked-filters.md +++ b/_docs/master/troubleshooting-guide/linked-filters.md @@ -21,11 +21,11 @@ If you are having problems with a regular [filter widget][filter-widget-gloss], ## Does a connected dashboard card use a SQL variable? -**Root cause**: Native/SQL questions must have a [field filter](../questions/native-editor/sql-parameters#the-field-filter-variable-type) variable in order to be linked. Regular SQL variables won't work. +**Root cause**: Native/SQL questions must have a [field filter](../questions/native-editor/field-filters) variable in order to be linked. Regular SQL variables won't work. **Steps to take**: -1. Update the card's query to change the regular variable to a [field filter](../questions/native-editor/sql-parameters#the-field-filter-variable-type) variable. +1. Update the card's query to change the regular variable to a [field filter](../questions/native-editor/field-filters) variable. See [Limitations of linking filters](../dashboards/linked-filters#limitations-of-linked-filters). diff --git a/_docs/master/troubleshooting-guide/sql.md b/_docs/master/troubleshooting-guide/sql.md index 6149dd0a04..53983e0683 100644 --- a/_docs/master/troubleshooting-guide/sql.md +++ b/_docs/master/troubleshooting-guide/sql.md @@ -22,9 +22,8 @@ layout: new-docs ## SQL variables and field filters - [Filter widget doesn't display a dropdown menu of values](../data-modeling/metadata-editing#changing-a-search-box-filter-to-a-dropdown-filter). -- [SQL query contains table aliases](../questions/native-editor/sql-parameters#field-filters-dont-work-with-table-aliases). -- [SQL syntax error: missing `FROM` clause](../questions/native-editor/sql-parameters#field-filters-must-be-connected-to-fields-included-in-the-query). -- [No option to display a filter widget](../questions/native-editor/sql-parameters#field-filter-compatible-types). +- [SQL query contains table aliases](../questions/native-editor/field-filters#specifying-the-table-and-field-alias). +- [SQL syntax error: missing `FROM` clause](../questions/native-editor/field-filters#field-filters-must-be-connected-to-database-fields-included-in-the-query). - [I don't know the SQL variable type](/learn/metabase-basics/querying-and-dashboards/sql-in-metabase/sql-variables) ## SQL syntax errors diff --git a/_site/docs/master/CONTRIBUTING.html b/_site/docs/master/CONTRIBUTING.html index 22ddaace09..903a081dfe 100644 --- a/_site/docs/master/CONTRIBUTING.html +++ b/_site/docs/master/CONTRIBUTING.html @@ -5014,12 +5014,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5033,6 +5027,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
      @@ -5049,24 +5044,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/actions/basic.html b/_site/docs/master/actions/basic.html index ca0e98e91e..a0126858b5 100644 --- a/_site/docs/master/actions/basic.html +++ b/_site/docs/master/actions/basic.html @@ -4989,12 +4989,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5008,6 +5002,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
      @@ -5024,24 +5019,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/actions/custom.html b/_site/docs/master/actions/custom.html index f6626dd4eb..d455ed338a 100644 --- a/_site/docs/master/actions/custom.html +++ b/_site/docs/master/actions/custom.html @@ -5085,12 +5085,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5104,6 +5098,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
      @@ -5120,24 +5115,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/actions/introduction.html b/_site/docs/master/actions/introduction.html index 2efb8496c7..8e47ea85cd 100644 --- a/_site/docs/master/actions/introduction.html +++ b/_site/docs/master/actions/introduction.html @@ -4995,12 +4995,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5014,6 +5008,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
      @@ -5030,24 +5025,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/actions/start.html b/_site/docs/master/actions/start.html index 945e680abc..1f996cd154 100644 --- a/_site/docs/master/actions/start.html +++ b/_site/docs/master/actions/start.html @@ -4933,12 +4933,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4952,6 +4946,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -4968,24 +4963,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/api.html b/_site/docs/master/api.html index 090c90c3e4..1cdcfe3110 100644 --- a/_site/docs/master/api.html +++ b/_site/docs/master/api.html @@ -190,6 +190,105 @@ }, "required" : [ "zoom", "x", "y", "lat-field", "lon-field" ] }, + "gsheets.response" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "error" : { + "type" : "boolean" + }, + "message" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "error", "message" ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { } + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "sync_started_at" : { + "type" : "integer", + "minimum" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "sync_started_at", "created_by_id", "db_id" ] + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "last_sync_at" : { + "type" : "integer", + "minimum" : 1 + }, + "next_sync_at" : { + "type" : "integer", + "minimum" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "last_sync_at", "next_sync_at", "created_by_id", "db_id" ] + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "error_message" : { + "type" : "string", + "minLength" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "error_message", "created_by_id", "db_id" ] + } ] + } ] + }, "metabase-enterprise.metabot-v3.client.schema.message" : { "allOf" : [ { "type" : "object", @@ -275,10 +374,126 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.answer-sources-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-metric" + } + }, + "models" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-table" + } + } + }, + "required" : [ "metrics", "models" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.basic-metric" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.basic-table" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "fields" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "id" : { + "type" : "integer" + }, + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-metric" + } + }, + "name" : { + "type" : "string" + }, + "type" : { + "type" : "string", + "enum" : [ "model", "table" ] + } + }, + "required" : [ "id", "type", "name", "fields" ] + }, "metabase-enterprise.metabot-v3.tools.api.bucket" : { "type" : "string", "enum" : [ "millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "second-of-minute", "minute-of-hour", "hour-of-day", "day-of-week", "day-of-month", "day-of-year", "week-of-year", "month-of-year", "quarter-of-year", "year-of-era" ] }, + "metabase-enterprise.metabot-v3.tools.api.column" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "field_id" : { + "type" : "string" + }, + "field_values" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-values" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "type" : "string" + }, + "type" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-type" + } + }, + "required" : [ "field_id", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.columns" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "metabase-enterprise.metabot-v3.tools.api.count" : { + "type" : "integer" + }, "metabase-enterprise.metabot-v3.tools.api.create-dashboard-subscription-arguments" : { "allOf" : [ { "type" : "object", @@ -441,6 +656,28 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.field-type" : { + "type" : "string", + "enum" : [ "boolean", "date", "datetime", "time", "number", "string" ] + }, + "metabase-enterprise.metabot-v3.tools.api.field-values" : { + "anyOf" : [ { + "type" : "array", + "items" : { + "type" : "boolean" + } + }, { + "type" : "array", + "items" : { + "type" : "number" + } + }, { + "type" : "array", + "items" : { + "type" : "string" + } + } ] + }, "metabase-enterprise.metabot-v3.tools.api.field-values-arguments" : { "allOf" : [ { "type" : "object", @@ -465,6 +702,38 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.field-values-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "field_id" : { + "type" : "string" + }, + "statistics" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.statistics" + }, + "values" : { + "type" : "array", + "items" : { } + } + }, + "required" : [ "field_id" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.filter" : { "anyOf" : [ { "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.existence-filter" @@ -544,6 +813,86 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.filtering-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Query" + }, + "query_id" : { + "type" : "string" + }, + "result_columns" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "type" : { + "const" : "query" + } + }, + "required" : [ "type", "query_id", "query", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.find-metric-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "queryable_dimensions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.column" + } + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name", "queryable_dimensions" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.find-outliers-arguments" : { "allOf" : [ { "type" : "object", @@ -613,24 +962,115 @@ "properties" : { } } ] }, - "metabase-enterprise.metabot-v3.tools.api.generate-insights-arguments" : { - "type" : "object", - "properties" : { - "for" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "metric_id" : { - "type" : "integer" - } - }, - "required" : [ "metric_id" ] - }, { - "type" : "object", - "properties" : { - "table_id" : { - "type" : "string" - } + "metabase-enterprise.metabot-v3.tools.api.find-outliers-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "dimension" : { }, + "value" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "number" + } ] + } + }, + "required" : [ "dimension", "value" ] + } + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.full-metric" : { + "type" : "object", + "properties" : { + "default_time_dimension_field_id" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "queryable_dimensions" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "metric" + } + }, + "required" : [ "id", "type", "name" ] + }, + "metabase-enterprise.metabot-v3.tools.api.full-table" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "fields" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "id" : { + "type" : "integer" + }, + "metrics" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-metric" + } + }, + "name" : { + "type" : "string" + }, + "queryable_foreign_key_tables" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.basic-table" + } + }, + "type" : { + "type" : "string", + "enum" : [ "model", "table" ] + } + }, + "required" : [ "id", "type", "name", "fields" ] + }, + "metabase-enterprise.metabot-v3.tools.api.generate-insights-arguments" : { + "type" : "object", + "properties" : { + "for" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "metric_id" : { + "type" : "integer" + } + }, + "required" : [ "metric_id" ] + }, { + "type" : "object", + "properties" : { + "table_id" : { + "type" : "string" + } }, "required" : [ "table_id" ] }, { @@ -655,6 +1095,74 @@ }, "required" : [ "for" ] }, + "metabase-enterprise.metabot-v3.tools.api.get-current-user-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "email_address" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "user" + } + }, + "required" : [ "id", "type", "name", "email_address" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.get-dashboard-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "type" : { + "const" : "dashboard" + } + }, + "required" : [ "id", "type", "name" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-metric-details-arguments" : { "allOf" : [ { "type" : "object", @@ -681,6 +1189,60 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-metric-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-metric" + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, + "metabase-enterprise.metabot-v3.tools.api.get-query-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "query" : { + "type" : "object", + "properties" : { } + }, + "query_id" : { + "type" : "string" + }, + "result_columns" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "query" + } + }, + "required" : [ "type", "query_id", "query", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-report-details-arguments" : { "allOf" : [ { "type" : "object", @@ -703,6 +1265,43 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-report-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "result_columns" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.columns" + }, + "type" : { + "const" : "question" + } + }, + "required" : [ "id", "type", "name", "result_columns" ] + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.get-table-details-arguments" : { "allOf" : [ { "type" : "object", @@ -739,6 +1338,25 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.get-table-details-result" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "structured_output" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.full-table" + } + }, + "required" : [ "structured_output" ] + }, { + "type" : "object", + "properties" : { + "output" : { + "type" : "string" + } + }, + "required" : [ "output" ] + } ] + }, "metabase-enterprise.metabot-v3.tools.api.group-by" : { "allOf" : [ { "type" : "object", @@ -782,6 +1400,9 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.proportion" : { + "type" : "number" + }, "metabase-enterprise.metabot-v3.tools.api.query-metric-arguments" : { "allOf" : [ { "type" : "object", @@ -865,6 +1486,59 @@ "properties" : { } } ] }, + "metabase-enterprise.metabot-v3.tools.api.statistics" : { + "type" : "object", + "properties" : { + "values" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-values" + }, + "min" : { + "type" : "number" + }, + "percent_url" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "average_length" : { + "type" : "number" + }, + "earliest" : { + "type" : "string" + }, + "q1" : { + "type" : "number" + }, + "max" : { + "type" : "number" + }, + "distinct_count" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.count" + }, + "percent_state" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "percent_null" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "avg" : { + "type" : "number" + }, + "sd" : { + "type" : "number" + }, + "percent_email" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + }, + "latest" : { + "type" : "string" + }, + "q3" : { + "type" : "number" + }, + "percent_json" : { + "$ref" : "#/components/schemas/metabase-enterprise.metabot-v3.tools.api.proportion" + } + } + }, "metabase-enterprise.metabot-v3.tools.api.string-filter" : { "allOf" : [ { "type" : "object", @@ -1003,154 +1677,15 @@ }, "required" : [ "conversation_id" ] }, - "metabase.analyze.fingerprint.schema.Fingerprint" : { - "type" : "object", - "properties" : { - "experimental" : { - "type" : "object", - "properties" : { } - }, - "global" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.GlobalFingerprint" - }, - "type" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" - } - } - }, - "metabase.analyze.fingerprint.schema.GlobalFingerprint" : { - "type" : "object", - "properties" : { - "distinct-count" : { - "type" : "integer" - }, - "nil%" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - } - } - }, - "metabase.analyze.fingerprint.schema.NumberFingerprint" : { - "type" : "object", - "properties" : { - "avg" : { - "type" : "number" - }, - "max" : { - "type" : "number" - }, - "min" : { - "type" : "number" - }, - "q1" : { - "type" : "number" - }, - "q3" : { - "type" : "number" - }, - "sd" : { - "type" : "number" - } - } - }, - "metabase.analyze.fingerprint.schema.Percent" : { - "type" : "number" - }, - "metabase.analyze.fingerprint.schema.TemporalFingerprint" : { - "type" : "object", - "properties" : { - "earliest" : { - "type" : "string" - }, - "latest" : { - "type" : "string" - } - } - }, - "metabase.analyze.fingerprint.schema.TextFingerprint" : { - "type" : "object", - "properties" : { - "average-length" : { - "type" : "number" - }, - "percent-email" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-json" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-state" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - }, - "percent-url" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Percent" - } - } - }, - "metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" : { - "type" : "object", - "properties" : { - "type/DateTime" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TemporalFingerprint" - }, - "type/Number" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.NumberFingerprint" - }, - "type/Text" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TextFingerprint" - } - } - }, - "metabase.analyze.query-results.MaybeUnnormalizedReference" : { }, - "metabase.analyze.query-results.ResultColumnMetadata" : { - "type" : "object", - "properties" : { - "field_ref" : { - "$ref" : "#/components/schemas/metabase.analyze.query-results.MaybeUnnormalizedReference" - }, - "fingerprint" : { - "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.Fingerprint" - }, - "base_type" : { - "description" : "value must be a valid field data type (keyword or string)." - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, - "name" : { - "type" : "string" - }, - "semantic_type" : { - "description" : "value must be a valid field semantic or relation type (keyword or string)." - }, - "display_name" : { - "type" : "string" - }, - "converted_timezone" : { - "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" - }, - "unit" : { - "description" : "value must be a keyword or string.", - "anyOf" : [ { - "type" : "string" - }, { - "type" : "string" - } ] - }, - "description" : { - "type" : "string" - } - }, - "required" : [ "name", "display_name", "base_type" ] - }, - "metabase.analyze.query-results.ResultsMetadata" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.analyze.query-results.ResultColumnMetadata" - }, - "description" : "value must be an array of valid results column metadata maps.", - "optional" : true - }, - "metabase.cache.api..cache-strategy.base" : { + "metabase.analyze.query-results.ResultsMetadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "value must be an array of valid results column metadata maps.", + "optional" : true + }, + "metabase.cache.api..cache-strategy.base" : { "type" : "object", "properties" : { "type" : { @@ -1335,65 +1870,2653 @@ "required" : [ "type", "subject", "body" ] } ] }, - "metabase.lib.schema.common.non-blank-string" : { - "type" : "string", - "minLength" : 1 + "metabase.collections.api.DashboardQuestionCandidate" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string" + }, + "sole_dashboard_info" : { + "type" : "object", + "properties" : { + "description" : { + "type" : "string" + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string" + } + }, + "required" : [ "id", "name" ] + } + }, + "required" : [ "id", "name", "sole_dashboard_info" ] }, - "metabase.lib.schema.expression.temporal.timezone-id" : { - "allOf" : [ { - "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + "metabase.collections.api.DashboardQuestionCandidatesResponse" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidate" + } + }, + "total" : { + "type" : "integer" + } + }, + "required" : [ "data", "total" ] + }, + "metabase.collections.api.MoveDashboardQuestionCandidatesResponse" : { + "type" : "object", + "properties" : { + "moved" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + } + }, + "required" : [ "moved" ] + }, + "metabase.legacy-mbql.schema.!=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.*" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.+" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.-" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema./" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.<" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.<=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.>" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.>=" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.Addable" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeExpressionArg" }, { - "anyOf" : [ { - "type" : "string", - "enum" : [ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Asmera", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Timbuktu", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Atka", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Buenos_Aires", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Catamarca", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Ensenada", "America/Fort_Nelson", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Jujuy", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Knox_IN", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Louisville", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Mendoza", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Acre", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Rosario", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Shiprock", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Virgin", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/South_Pole", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Calcutta", "Asia/Chita", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Colombo", "Asia/Dacca", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Harbin", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Katmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macao", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Saigon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Tel_Aviv", "Asia/Thimbu", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Jan_Mayen", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/ACT", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Canberra", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/LHI", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/NSW", "Australia/North", "Australia/Perth", "Australia/Queensland", "Australia/South", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Australia/West", "Australia/Yancowinna", "Brazil/Acre", "Brazil/DeNoronha", "Brazil/East", "Brazil/West", "CET", "CST6CDT", "Canada/Atlantic", "Canada/Central", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Canada/Saskatchewan", "Canada/Yukon", "Chile/Continental", "Chile/EasterIsland", "Cuba", "EET", "EST5EDT", "Egypt", "Eire", "Etc/GMT", "Etc/GMT+0", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/UTC", "Etc/Universal", "Etc/Zulu", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belfast", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Tiraspol", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "GB", "GB-Eire", "GMT", "GMT0", "Greenwich", "Hongkong", "Iceland", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Iran", "Israel", "Jamaica", "Japan", "Kwajalein", "Libya", "MET", "MST7MDT", "Mexico/BajaNorte", "Mexico/BajaSur", "Mexico/General", "NZ", "NZ-CHAT", "Navajo", "PRC", "PST8PDT", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kanton", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Samoa", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "Pacific/Yap", "Poland", "Portugal", "ROK", "Singapore", "SystemV/AST4", "SystemV/AST4ADT", "SystemV/CST6", "SystemV/CST6CDT", "SystemV/EST5", "SystemV/EST5EDT", "SystemV/HST10", "SystemV/MST7", "SystemV/MST7MDT", "SystemV/PST8", "SystemV/PST8PDT", "SystemV/YST9", "SystemV/YST9YDT", "Turkey", "UCT", "US/Alaska", "US/Aleutian", "US/Arizona", "US/Central", "US/East-Indiana", "US/Eastern", "US/Hawaii", "US/Indiana-Starke", "US/Michigan", "US/Mountain", "US/Pacific", "US/Samoa", "UTC", "Universal", "W-SU", "WET", "Zulu" ] - }, { - "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" - } ] + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpressionArg" } ] }, - "metabase.lib.schema.id.card" : { - "type" : "integer", - "minimum" : 1 + "metabase.legacy-mbql.schema.Aggregation" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation-options" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.UnnamedAggregation" + } ] }, - "metabase.lib.schema.id.field" : { - "type" : "integer", - "minimum" : 1 + "metabase.legacy-mbql.schema.BooleanExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.and" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.or" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.!=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.<" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.>" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.<=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.>=" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.between" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.starts-with" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ends-with" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.contains" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.in" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-in" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.does-not-contain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.inside" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.is-empty" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-empty" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.is-null" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.not-null" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-time-interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.time-interval" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.during" + } ] }, - "metabase.lib.schema.literal..string.datetime" : { + "metabase.legacy-mbql.schema.Constraints" : { + "description" : "Additional constraints added to a query limiting the maximum number of rows that can be returned. Mostly useful\n because native queries don't support the MBQL `:limit` clause. For MBQL queries, if `:limit` is set, it will\n override these values.", + "type" : "object", + "properties" : { + "max-results" : { + "description" : "Maximum number of results to allow for a query with aggregations. If `max-results-bare-rows` is unset, this\n applies to all queries", + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + }, + "max-results-bare-rows" : { + "description" : "Maximum number of results to allow for a query with no aggregations. If set, this should be LOWER than\n `:max-results`.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + } + } + }, + "metabase.legacy-mbql.schema.DatabaseID" : { + "description" : "Schema for a valid `:database` ID, in the top-level 'outer' query. Either a positive integer (referring to an\n actual Database), or the saved questions virtual ID, which is a placeholder used for queries using the\n `:source-table \"card__id\"` shorthand for a source query resolved by middleware (since clients might not know the\n actual DB for that source query.)", "anyOf" : [ { - "type" : "string", - "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + "$ref" : "#/components/schemas/metabase.lib.schema.id.saved-questions-virtual-database" }, { - "type" : "string", - "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" } ] }, - "metabase.lib.schema.literal..string.zone-offset" : { - "type" : "string", - "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" + "metabase.legacy-mbql.schema.DateOrDatetimeLiteral" : { + "description" : "Schema for a valid date or datetime literal.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.absolute-datetime" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.datetime" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.date" + } ] }, - "metabase.lib.schema.metadata..column.has-field-values" : { + "metabase.legacy-mbql.schema.DateTimeExpressionArg" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateOrDatetimeLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + } ] + }, + "metabase.legacy-mbql.schema.DateTimeUnit" : { + "description" : "Valid unit for *datetime* bucketing.", "type" : "string", - "enum" : [ "auto-list", "list", "none", "search" ] + "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] }, - "metabase.lib.schema.temporal-bucketing.unit" : { + "metabase.legacy-mbql.schema.DateUnit" : { + "description" : "Valid unit for date bucketing.", "type" : "string", - "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "second-of-minute", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] + "enum" : [ "quarter", "day", "week", "default", "day-of-week", "month", "month-of-year", "day-of-month", "year", "day-of-year", "year-of-era", "week-of-year", "quarter-of-year" ] }, - "metabase.logger.api.time-unit" : { + "metabase.legacy-mbql.schema.DatetimeDiffUnit" : { + "description" : "Valid units for a datetime-diff clause.", "type" : "string", - "enum" : [ "days", "hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds" ] + "enum" : [ "second", "minute", "hour", "day", "week", "month", "quarter", "year" ] }, - "metabase.notification.models.FullyHydratedNotification" : { - "description" : "Fully hydrated notification.", + "metabase.legacy-mbql.schema.DatetimeExpression" : { "oneOf" : [ { - "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.+" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-add" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-subtract" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.convert-timezone" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.now" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.date" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.today" + } ] + }, + "metabase.legacy-mbql.schema.EqualityComparable" : { + "anyOf" : [ { + "type" : "boolean" + }, { + "type" : "number" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemporalLiteral" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ExpressionArg" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + } ], + "optional" : true + }, + "metabase.legacy-mbql.schema.ExpressionArg" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "boolean" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.ExtractWeekMode" : { + "description" : "Valid modes to extract weeks.", + "type" : "string", + "enum" : [ "iso", "us", "instance" ] + }, + "metabase.legacy-mbql.schema.FieldOptions" : { + "allOf" : [ { + "type" : "object", + "properties" : { + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning", + "description" : "Replaces `binning-strategy`.\n\n Using binning requires the driver to support the `:binning` feature." + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit" + }, + "join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias", + "description" : "Replaces `joined-field`.\n\n `:join-alias` is used to refer to a FieldOrExpression from a different Table/nested query that you are EXPLICITLY\n JOINING against." + }, + "source-field" : { + "description" : "Replaces `fk->`.\n\n `:source-field` is used to refer to a FieldOrExpression from a different Table you would like IMPLICITLY JOINED to\n the source table.\n\n If both `:source-field` and `:join-alias` are supplied, `:join-alias` should be used to perform the join;\n `:source-field` should be for information purposes only.", + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "source-field-join-alias" : { + "description" : "The join alias of the source field used for an implicit join.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source-field-name" : { + "description" : "The name or desired alias of the field used for an implicit join.", + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "temporal-unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit", + "description" : "`:temporal-unit` is used to specify DATE BUCKETING for a FieldOrExpression that represents a moment in time of\n some sort.\n\n There is no requirement that all `:type/Temporal` derived FieldOrExpressions specify a `:temporal-unit`, but for\n legacy reasons `:field` clauses that refer to `:type/DateTime` FieldOrExpressions will be automatically \"bucketed\"\n in the `:breakout` and `:filter` clauses, but nowhere else. Auto-bucketing only applies to `:filter` clauses when\n values for comparison are `yyyy-MM-dd` date strings. See the `auto-bucket-datetimes` middleware for more details.\n `:field` clauses elsewhere will not be automatically bucketed, so drivers still need to make sure they do any\n special datetime handling for plain `:field` clauses when their FieldOrExpression derives from `:type/DateTime`." + } + } + }, { + "description" : "If `:base-type` is specified, the `:temporal-unit` must make sense, e.g. no bucketing by `:year`for\n a `:type/Time` column.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.validate-temporal-unit" + }, { + "description" : "You cannot use `:binning` keys like `:strategy` in the top level.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.no-binning-options-at-top-level" + } ] + }, + "metabase.legacy-mbql.schema.FieldOrExpressionDef" : { + "description" : "Schema for anything that is accepted as a top-level expression definition, either an arithmetic expression such as a\n `:+` clause or a `:field` or `:value` clause.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.offset" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.Fields" : { + "allOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, + "minItems" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.helpers.distinct" + } ] + }, + "metabase.legacy-mbql.schema.Filter" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatetimeExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.BooleanExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.segment" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.Ident" : { + "description" : "Unique identifier string for new `:column` refs. The new refs aren't used in legacy MBQL (currently) but the\n idents for column-introducing new clauses (joins, aggregations, breakouts, expressions) are randomly generated when\n the clauses are created, so the idents must be preserved in legacy MBQL.\n\n These are opaque strings under the initial design; I've made them a separate schema for documentation and\n future-proofing.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, { + "type" : "string" + } ] + }, + "metabase.legacy-mbql.schema.IntGreaterThanZeroOrNumericExpression" : { + "oneOf" : [ { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + } ] + }, + "metabase.legacy-mbql.schema.Join" : { + "description" : "Perform the equivalent of a SQL `JOIN` with another Table or nested `:source-query`. JOINs are either explicitly\n specified in the incoming query, or implicitly generated when one uses a `:field` clause with `:source-field`.\n\n In the top-level query, you can reference Fields from the joined table or nested query by including `:source-field`\n in the `:field` options (known as implicit joins); for explicit joins, you *must* specify `:join-alias` yourself; in\n the `:field` options, e.g.\n\n ;; for joins against other Tables/MBQL source queries\n [:field 1 {:join-alias \"my_join_alias\"}]\n\n ;; for joins against native queries\n [:field \"my_field\" {:base-type :field/Integer, :join-alias \"my_join_alias\"}]", + "type" : "object", + "properties" : { + "ident" : { + "description" : "An opaque string used as a unique identifier for this join clause, even if it evolves. This string is randomly\n generated when a join clause is created, so it can never be confused with another join of the same table.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Ident" + }, + "strategy" : { + "description" : "Defaults to `:left-join`; used for all automatically-generated JOINs\n\n Driver implementations: this is guaranteed to be present after pre-processing.", + "type" : "string", + "enum" : [ "full-join", "right-join", "left-join", "inner-join" ] + }, + "source-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "Metadata about the source query being used, if pulled in from a Card via the\n `:source-table \"card__id\"` syntax. added automatically by the `resolve-card-id-source-tables` middleware." + }, + "condition" : { + "description" : "The condition on which to JOIN. Can be anything that is a valid `:filter` clause. For automatically-generated\n JOINs this is usually something like\n\n [:= [:field {:join-alias }]]", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Filter" + }, + "source-query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.SourceQuery" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field", + "description" : "Mostly used only internally. When a join is implicitly generated via a `:field` clause with\n `:source-field`, the ID of the foreign key field in the source Table will be recorded here. This information is used\n to add `fk_field_id` information to the `:cols` in the query results, and also for drill-thru. When generating\n explicit joins by hand you can usually omit this information, altho it doesn't hurt to include it if you know it.\n\n Don't set this information yourself. It will have no effect." + }, + "fields" : { + "description" : "The Fields from this join to include in parent-level results. This can be either `:none`, `:all`, or a sequence\n of `:field` clauses.\n\n * `:none`: no Fields from the joined table or nested query are included (unless indirectly included by breakouts or\n other clauses). This is the default, and what is used for automatically-generated joins.\n\n * `:all`: will include all of the Field from the joined table or query\n\n * a sequence of Field clauses: include only the Fields specified. Valid clauses are the same as the top-level\n `:fields` clause. This should be non-empty and all elements should be distinct. The normalizer will automatically\n remove duplicate fields for you, and replace empty clauses with `:none`.\n\n Driver implementations: you can ignore this clause. Relevant fields will be added to top-level `:fields` clause with\n appropriate aliases.", + "anyOf" : [ { + "type" : "string", + "enum" : [ "all", "none" ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Fields" + } ] + }, + "source-table" : { + "description" : "*What* to JOIN. Self-joins can be done by using the same `:source-table` as in the query where\n this is specified. YOU MUST SUPPLY EITHER `:source-table` OR `:source-query`, BUT NOT BOTH!", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, { + "description" : "`card__` string Table ID", + "type" : "string", + "pattern" : "^card__[1-9]\\d*$" + } ] + }, + "alias" : { + "description" : "The name used to alias the joined table or query. This is usually generated automatically and generally looks\n like `table__via__field`. You can specify this yourself if you need to reference a joined field with a `:join-alias`\n in the options.\n\n Driver implementations: This is guaranteed to be present after pre-processing.", + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + } + }, + "required" : [ "condition" ] + }, + "metabase.legacy-mbql.schema.Joins" : { + "description" : "Schema for a valid sequence of `Join`s. Must be a non-empty sequence, and `:alias`, if specified, must be unique.", + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Join" + }, + "minItems" : 1 + }, + "metabase.legacy-mbql.schema.MBQLQuery" : { + "type" : "object", + "properties" : { + "breakout" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, + "minItems" : 1 + }, + "source-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + }, + "description" : "Info about the columns of the source query. Added in automatically by middleware. This metadata is\n primarily used to let power things like binning when used with Field Literals instead of normal Fields." + }, + "source-query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.SourceQuery" + }, + "limit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.int-greater-than-or-equal-to-zero" + }, + "filter" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Filter" + }, + "joins" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Joins" + }, + "aggregation" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, + "minItems" : 1 + }, + "fields" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Fields" + }, + "source-table" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, { + "description" : "`card__` string Table ID", + "type" : "string", + "pattern" : "^card__[1-9]\\d*$" + } ] + }, + "order-by" : { + "allOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.OrderBy" + }, + "minItems" : 1 + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.helpers.distinct" + } ] + }, + "page" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Page" + }, + "expressions" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.FieldOrExpressionDef" + } + } + } + }, + "metabase.legacy-mbql.schema.MiddlewareOptions" : { + "description" : "Additional options that can be used to toggle middleware on or off.", + "type" : "object", + "properties" : { + "add-default-userland-constraints?" : { + "type" : "boolean", + "description" : "Whether to add some default `max-results` and `max-results-bare-rows` constraints. By default, none are added,\n although the functions that ultimately power most API endpoints tend to set this to `true`. See\n `add-constraints` middleware for more details." + }, + "disable-max-results?" : { + "description" : "Disable applying a default limit on the query results. Handled in the `add-default-limit` middleware. If true,\n this will override the `:max-results` and `:max-results-bare-rows` values in `Constraints`.", + "type" : "boolean" + }, + "disable-mbql->native?" : { + "description" : "Disable the MBQL->native middleware. If you do this, the query will not work at all, so there are no cases where\n you should set this yourself. This is only used by the `metabase.query-processor.preprocess/preprocess` function to\n get the fully pre-processed query without attempting to convert it to native.", + "type" : "boolean" + }, + "format-rows?" : { + "description" : "Should we skip converting datetime types to ISO-8601 strings with appropriate timezone when post-processing\n results? Used by `metabase.query-processor.middleware.format-rows`default `false`.", + "type" : "boolean" + }, + "process-viz-settings?" : { + "type" : "boolean", + "description" : "Whether to process a question's visualization settings and include them in the result metadata so that they can\n incorporated into an export. Used by `metabase.query-processor.middleware.visualization-settings`; default\n `false`." + }, + "skip-results-metadata?" : { + "description" : "Should we skip adding `results_metadata` to query results after running the query? Used by\n `metabase.query-processor.middleware.results-metadata`; default `false`. (Note: we may change the name of this\n column in the near future, to `result_metadata`, to fix inconsistencies in how we name things.)", + "type" : "boolean" + }, + "userland-query?" : { + "type" : "boolean", + "description" : "Userland queries are ones ran as a result of an API call, Pulse, or the like. Special handling is done in\n certain userland-only middleware for such queries -- results are returned in a slightly different format, and\n QueryExecution entries are normally saved, unless you pass `:no-save` as the option." + } + } + }, + "metabase.legacy-mbql.schema.NativeSourceQuery" : { + "type" : "object", + "properties" : { + "collection" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "native" : { }, + "template-tags" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTagMap" + } + }, + "required" : [ "native" ] + }, + "metabase.legacy-mbql.schema.NumericExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.+" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.-" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.~1" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.*" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.coalesce" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.length" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.floor" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ceil" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.round" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.abs" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.power" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sqrt" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.exp" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.log" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.datetime-diff" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.integer" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.float" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.temporal-extract" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-year" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-quarter" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-month" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-week" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-day" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-day-of-week" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-hour" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-minute" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.get-second" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + } ] + }, + "metabase.legacy-mbql.schema.NumericExpressionArg" : { + "oneOf" : [ { + "type" : "number" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + } ] + }, + "metabase.legacy-mbql.schema.OrderBy" : { + "description" : "Schema for an `order-by` clause subclause.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.asc" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.desc" + } ] + }, + "metabase.legacy-mbql.schema.OrderComparable" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "anyOf" : [ { + "type" : "number" + }, { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemporalLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ExpressionArg" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.relative-datetime" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + } ] + } ] + }, + "metabase.legacy-mbql.schema.Page" : { + "description" : "`page` = page num, starting with 1. `items` = number of items per page.\n e.g.\n\n {:page 1, :items 10} = items 1-10\n {:page 2, :items 10} = items 11-20", + "type" : "object", + "properties" : { + "items" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "page" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "page", "items" ] + }, + "metabase.legacy-mbql.schema.Parameter" : { + "description" : "Schema for the *value* of a parameter (e.g. a Dashboard parameter or a native query template tag) as passed in as\n part of the `:parameters` list in a query.", + "type" : "object", + "properties" : { + "default" : { }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { }, + "slug" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "target" : { + "oneOf" : [ { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + }, { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.dimension" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.variable" + } ] + } ] + } ] + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.type" + }, + "value" : { } + }, + "required" : [ "type" ] + }, + "metabase.legacy-mbql.schema.ParameterList" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Parameter" + }, + "optional" : true + }, + "metabase.legacy-mbql.schema.Query" : { + "allOf" : [ { + "type" : "object", + "properties" : { + "update-row" : { + "$ref" : "#/components/schemas/metabase.lib.schema.actions.row" + }, + "settings" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Settings" + }, + "constraints" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Constraints" + }, + "query" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MBQLQuery" + }, + "native" : { + "type" : "object", + "properties" : { + "collection" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "query" : { }, + "template-tags" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTagMap" + } + }, + "required" : [ "query" ] + }, + "info" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.info", + "description" : "Used when recording info about this run in the QueryExecution log; things like context query was\n ran in and User who ran it." + }, + "middleware" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MiddlewareOptions" + }, + "database" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DatabaseID" + }, + "type" : { + "description" : "Type of query. `:query` = MBQL; `:native` = native.", + "type" : "string", + "enum" : [ "query", "native" ] + }, + "parameters" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ParameterList" + }, + "create-row" : { + "$ref" : "#/components/schemas/metabase.lib.schema.actions.row" + } + }, + "required" : [ "type" ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.check-keys-for-query-type" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.check-query-does-not-have-source-metadata" + } ] + }, + "metabase.legacy-mbql.schema.Reference" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + } ] + }, + "metabase.legacy-mbql.schema.RelativeDatetimeUnit" : { + "type" : "string", + "enum" : [ "default", "minute", "hour", "day", "week", "month", "quarter", "year" ] + }, + "metabase.legacy-mbql.schema.Settings" : { + "description" : "Options that tweak the behavior of the query processor.", + "type" : "object", + "properties" : { + "report-timezone" : { + "description" : "The timezone the query should be ran in, overriding the default report timezone for the instance.", + "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" + } + } + }, + "metabase.legacy-mbql.schema.SourceQuery" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NativeSourceQuery" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.MBQLQuery" + } ] + }, + "metabase.legacy-mbql.schema.StringExpression" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.substring" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.trim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ltrim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.rtrim" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.replace" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.lower" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.upper" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.concat" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.regex-match-first" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.coalesce" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.host" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.domain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.subdomain" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.path" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.month-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.quarter-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.day-name" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.text" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.split-part" + } ] + }, + "metabase.legacy-mbql.schema.StringExpressionArg" : { + "oneOf" : [ { + "type" : "string" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.StringExpression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.value" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field-or-expression-ref" + } ] + }, + "metabase.legacy-mbql.schema.TemplateTag" : { + "description" : "Schema for a template tag as specified in a native query. There are four types of template tags, differentiated by\n `:type`.\n\n Template tags are used to specify in native queries that are replaced with some sort of value when\n the query itself runs. There are four basic types of template tag for native queries:\n\n 1. Field filters, which are used like\n\n SELECT * FROM table WHERE \n\n These reference specific Fields and are replaced with entire conditions, e.g. `some_field > 1000`\n\n 2. Raw values, which are used like\n\n SELECT * FROM table WHERE my_field = \n\n These are replaced with raw values.\n\n 3. Native query snippets, which might be used like\n\n SELECT * FROM () source\n\n These are replaced with `NativeQuerySnippet`s from the application database.\n\n 4. Source query Card IDs, which are used like\n\n SELECT * FROM () source\n\n These are replaced with the query from the Card with that ID.\n\n Field filters and raw values usually have their value specified by `:parameters`.", + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:FieldFilter" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:Snippet" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:SourceQuery" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:TemporalUnit" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag:RawValue" + } ] + }, + "metabase.legacy-mbql.schema.TemplateTag:FieldFilter" : { + "description" : "Schema for a field filter template tag.", + "type" : "object", + "properties" : { + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "const" : "dimension" + }, + "alias" : { + "type" : "string" + }, + "options" : { + "type" : "object", + "additionalProperties" : { }, + "description" : "optional map to be appended to filter clause" + }, + "dimension" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "default" : { }, + "widget-type" : { + "description" : "which type of widget the frontend should show for this Field Filter; this also affects which parameter types\n are allowed to be specified for it.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.WidgetType" + } + }, + "required" : [ "type", "name", "display-name", "dimension", "widget-type" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:RawValue" : { + "description" : "Schema for a raw value template tag.", + "type" : "object", + "properties" : { + "default" : { }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "type" : "string", + "enum" : [ "date", "number", "boolean", "text" ] + } + }, + "required" : [ "type", "name", "display-name" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:Snippet" : { + "description" : "Schema for a native query snippet template tag.", + "type" : "object", + "properties" : { + "database" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "snippet-id" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "snippet-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "type" : { + "const" : "snippet" + } + }, + "required" : [ "type", "name", "display-name", "snippet-name", "snippet-id" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:SourceQuery" : { + "description" : "Schema for a source query template tag.", + "type" : "object", + "properties" : { + "card-id" : { + "description" : "Must be a positive integer.", + "type" : "integer", + "minimum" : 1 + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "type" : { + "const" : "card" + } + }, + "required" : [ "type", "name", "display-name", "card-id" ] + }, + "metabase.legacy-mbql.schema.TemplateTag:TemporalUnit" : { + "description" : "Schema for a temporal unit template tag.", + "type" : "object", + "properties" : { + "alias" : { + "type" : "string" + }, + "default" : { }, + "dimension" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { + "type" : "boolean" + }, + "type" : { + "const" : "temporal-unit" + } + }, + "required" : [ "type", "name", "display-name", "dimension" ] + }, + "metabase.legacy-mbql.schema.TemplateTagMap" : { + "description" : "Schema for the `:template-tags` map passed in as part of a native query.\n\n Map of template tag name -> template tag definition", + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TemplateTag" + } + }, + "metabase.legacy-mbql.schema.TemporalExtractUnit" : { + "description" : "Valid units to extract from a temporal.", + "type" : "string", + "enum" : [ "year-of-era", "quarter-of-year", "month-of-year", "week-of-year-iso", "week-of-year-us", "week-of-year-instance", "day-of-month", "day-of-week", "day-of-week-iso", "hour-of-day", "minute-of-hour", "second-of-minute" ] + }, + "metabase.legacy-mbql.schema.TemporalLiteral" : { + "description" : "Schema for valid temporal literals.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateOrDatetimeLiteral" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.TimeLiteral" + } ] + }, + "metabase.legacy-mbql.schema.TimeLiteral" : { + "description" : "Schema for valid time literals.", + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.time" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal.time" + } ] + }, + "metabase.legacy-mbql.schema.TimeUnit" : { + "description" : "Valid unit for time bucketing.", + "type" : "string", + "enum" : [ "hour", "second", "default", "hour-of-day", "millisecond", "minute-of-hour", "minute" ] + }, + "metabase.legacy-mbql.schema.UnnamedAggregation" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpression" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.avg" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.cum-sum" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.distinct" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.distinct-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.stddev" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sum" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.min" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.max" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.metric" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.share" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.count-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.sum-where" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.case:if" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.median" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.percentile" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.ag:var" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.cum-count" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.count" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.offset" + } ] + } ] + }, + "metabase.legacy-mbql.schema.ValueTypeInfo" : { + "description" : "Type info about a value in a `:value` clause. Added automatically by `wrap-value-literals` middleware to values in filter clauses based on the Field in the clause.", + "type" : "object", + "properties" : { + "base_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "database_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "semantic_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "unit" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.DateTimeUnit" + } + } + }, + "metabase.legacy-mbql.schema.WidgetType" : { + "description" : "Schema for valid values of `:widget-type` for a [[::TemplateTag:FieldFilter]].", + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.widget-type" + }, + "metabase.legacy-mbql.schema.abs" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.absolute-datetime" : { + "oneOf" : [ { }, { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.ag:var" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.aggregation" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.aggregation-options" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.and" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.asc" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.avg" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.between" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.case" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.case:if" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ceil" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.check-keys-for-query-type" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.check-query-does-not-have-source-metadata" : { + "description" : "`:source-metadata` is added to queries when `card__id` source queries are resolved. It contains info about the\n columns in the source query.\n\n Where this is added was changed in Metabase 0.33.0 -- previously, when `card__id` source queries were resolved, the\n middleware would add `:source-metadata` to the top-level; to support joins against source queries, this has been\n changed so it is always added at the same level the resolved `:source-query` is added.\n\n This should automatically be fixed by `normalize`; if we encounter it, it means some middleware is not functioning\n properly." + }, + "metabase.legacy-mbql.schema.coalesce" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.concat" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.contains" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.convert-timezone" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.count" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.count-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.cum-count" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.cum-sum" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.date" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-add" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-diff" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.datetime-subtract" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.day-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.desc" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.dimension" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.distinct" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.distinct-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.does-not-contain" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.domain" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.during" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ends-with" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.exp" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.expression" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.field" : { + "allOf" : [ { + "allOf" : [ ] + }, { + "description" : "Fields using names rather than integer IDs are required to specify `:base-type`.", + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.require-base-type-for-field-name" + } ] + }, + "metabase.legacy-mbql.schema.field-or-expression-ref" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + } ] + }, + "metabase.legacy-mbql.schema.float" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.floor" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-day" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-day-of-week" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-hour" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-minute" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-month" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-quarter" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-second" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-week" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.get-year" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.helpers.distinct" : { + "description" : "values must be distinct" + }, + "metabase.legacy-mbql.schema.host" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.in" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.inside" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.integer" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.is-empty" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.is-null" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.legacy-column-metadata" : { + "description" : "Schema for a single legacy metadata column. This is the pre-Lib equivalent of\n `:metabase.lib.schema.metadata/column`.", + "type" : "object", + "properties" : { + "field_ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "visibility_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "base_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "display_name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "converted_timezone" : { + "$ref" : "#/components/schemas/metabase.lib.schema.expression.temporal.timezone-id" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "effective_type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + } + }, + "required" : [ "base_type", "display_name", "name" ] + }, + "metabase.legacy-mbql.schema.length" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.log" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.lower" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.ltrim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.max" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.median" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.metric" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.min" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.month-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.no-binning-options-at-top-level" : { }, + "metabase.legacy-mbql.schema.not" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-empty" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-in" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.not-null" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.now" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.offset" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.or" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.path" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.percentile" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.power" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.quarter-name" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.regex-match-first" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.relative-datetime" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.relative-time-interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.replace" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.require-base-type-for-field-name" : { }, + "metabase.legacy-mbql.schema.round" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.rtrim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.segment" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.share" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.split-part" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sqrt" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.starts-with" : { + "anyOf" : [ { + "allOf" : [ ] + }, { + "allOf" : [ ] + } ] + }, + "metabase.legacy-mbql.schema.stddev" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.subdomain" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.substring" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sum" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.sum-where" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.template-tag" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.temporal-extract" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.text" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.time" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.time-interval" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.today" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.trim" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.upper" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.validate-temporal-unit" : { }, + "metabase.legacy-mbql.schema.value" : { + "allOf" : [ ] + }, + "metabase.legacy-mbql.schema.variable" : { + "allOf" : [ ] + }, + "metabase.lib.schema.actions.row" : { + "type" : "object", + "additionalProperties" : { } + }, + "metabase.lib.schema.binning.bin-width" : { + "description" : "Bin width (size of each bin).", + "$ref" : "#/components/schemas/metabase.lib.schema.common.positive-number" + }, + "metabase.lib.schema.binning.binning" : { + "description" : "Schema for `:binning` options passed to a `:field` clause.", + "allOf" : [ { + "type" : "object", + "properties" : { + "strategy" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.strategy" + } + }, + "required" : [ "strategy" ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "strategy" : { + "const" : "default" + } + }, + "required" : [ "strategy" ] + }, { + "type" : "object", + "properties" : { + "bin-width" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.bin-width" + }, + "strategy" : { + "const" : "bin-width" + } + }, + "required" : [ "strategy", "bin-width" ] + }, { + "type" : "object", + "properties" : { + "num-bins" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.num-bins" + }, + "strategy" : { + "const" : "num-bins" + } + }, + "required" : [ "strategy", "num-bins" ] + } ] + } ] + }, + "metabase.lib.schema.binning.num-bins" : { + "description" : "Number of bins to use.", + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.binning.strategy" : { + "type" : "string", + "enum" : [ "bin-width", "default", "num-bins" ] + }, + "metabase.lib.schema.common.base-type" : { + "type" : "string" + }, + "metabase.lib.schema.common.int-greater-than-or-equal-to-zero" : { + "description" : "Schema representing an integer than must also be greater than or equal to zero.", + "type" : "integer", + "minimum" : 0 + }, + "metabase.lib.schema.common.non-blank-string" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.common.options" : { + "default" : { }, + "type" : "object", + "properties" : { + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "database-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "display-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/uuid" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.uuid" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + } + }, + "required" : [ "lib/uuid" ] + }, + "metabase.lib.schema.common.positive-number" : { }, + "metabase.lib.schema.common.semantic-or-relation-type" : { + "description" : "valid semantic or relation type", + "type" : "string" + }, + "metabase.lib.schema.common.uuid" : { + "type" : "string", + "minLength" : 36, + "maxLength" : 36 + }, + "metabase.lib.schema.expression.temporal.timezone-id" : { + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, { + "anyOf" : [ { + "type" : "string", + "enum" : [ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Asmera", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Timbuktu", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Atka", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Buenos_Aires", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Catamarca", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Ciudad_Juarez", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Ensenada", "America/Fort_Nelson", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Jujuy", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Knox_IN", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Louisville", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Mendoza", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Acre", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Rosario", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Shiprock", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Virgin", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/South_Pole", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Calcutta", "Asia/Chita", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Colombo", "Asia/Dacca", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Harbin", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Katmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macao", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Saigon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Tel_Aviv", "Asia/Thimbu", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Jan_Mayen", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/ACT", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Canberra", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/LHI", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/NSW", "Australia/North", "Australia/Perth", "Australia/Queensland", "Australia/South", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Australia/West", "Australia/Yancowinna", "Brazil/Acre", "Brazil/DeNoronha", "Brazil/East", "Brazil/West", "CET", "CST6CDT", "Canada/Atlantic", "Canada/Central", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Canada/Saskatchewan", "Canada/Yukon", "Chile/Continental", "Chile/EasterIsland", "Cuba", "EET", "EST5EDT", "Egypt", "Eire", "Etc/GMT", "Etc/GMT+0", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/UTC", "Etc/Universal", "Etc/Zulu", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belfast", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Tiraspol", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "GB", "GB-Eire", "GMT", "GMT0", "Greenwich", "Hongkong", "Iceland", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Iran", "Israel", "Jamaica", "Japan", "Kwajalein", "Libya", "MET", "MST7MDT", "Mexico/BajaNorte", "Mexico/BajaSur", "Mexico/General", "NZ", "NZ-CHAT", "Navajo", "PRC", "PST8PDT", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kanton", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Samoa", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "Pacific/Yap", "Poland", "Portugal", "ROK", "Singapore", "SystemV/AST4", "SystemV/AST4ADT", "SystemV/CST6", "SystemV/CST6CDT", "SystemV/EST5", "SystemV/EST5EDT", "SystemV/HST10", "SystemV/MST7", "SystemV/MST7MDT", "SystemV/PST8", "SystemV/PST8PDT", "SystemV/YST9", "SystemV/YST9YDT", "Turkey", "UCT", "US/Alaska", "US/Aleutian", "US/Arizona", "US/Central", "US/East-Indiana", "US/Eastern", "US/Hawaii", "US/Indiana-Starke", "US/Michigan", "US/Mountain", "US/Pacific", "US/Samoa", "UTC", "Universal", "W-SU", "WET", "Zulu" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" + } ] + } ] + }, + "metabase.lib.schema.expression.window..offset.n" : { + "type" : "integer" + }, + "metabase.lib.schema.id.action" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.card" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.dashboard" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.database" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.dimension" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.field" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.pulse" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.saved-questions-virtual-database" : { + "description" : "The ID used to signify that a database is 'virtual' rather than physical.\n\n A fake integer ID is used so as to minimize the number of changes that need to be made on the frontend -- by using\n something that would otherwise be a legal ID, *nothing* need change there, and the frontend can query against this\n 'database' none the wiser. (This integer ID is negative which means it will never conflict with a *real* database\n ID.)\n\n This ID acts as a sort of flag. The relevant places in the middleware can check whether the DB we're querying is\n this 'virtual' database and take the appropriate actions.", + "const" : -1337 + }, + "metabase.lib.schema.id.segment" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.table" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.id.user" : { + "type" : "integer", + "minimum" : 1 + }, + "metabase.lib.schema.info.context" : { + "type" : "string", + "enum" : [ "action", "ad-hoc", "cache-refresh", "collection", "map-tiles", "pulse", "dashboard-subscription", "dashboard", "question", "csv-download", "xlsx-download", "json-download", "public-dashboard", "public-question", "public-csv-download", "public-xlsx-download", "public-json-download", "embedded-dashboard", "embedded-question", "embedded-csv-download", "embedded-xlsx-download", "embedded-json-download", "table-grid" ] + }, + "metabase.lib.schema.info.hash" : { + "type" : "string", + "format" : "byte" + }, + "metabase.lib.schema.info.info" : { + "type" : "object", + "properties" : { + "query-hash" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.hash" + }, + "action-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.action" + }, + "pivot/original-query" : { + "type" : "object", + "additionalProperties" : { } + }, + "executed-by" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.user" + }, + "card-entity-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "pivot/result-metadata" : { + "oneOf" : [ { + "const" : "none" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.column" + } + } ] + }, + "context" : { + "$ref" : "#/components/schemas/metabase.lib.schema.info.context" + }, + "dashboard-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dashboard" + }, + "metadata/model-metadata" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.lib-or-legacy-column" + } + }, + "pulse-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.pulse" + }, + "card-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + } + }, + "metabase.lib.schema.join.alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "metabase.lib.schema.literal..string.date" : { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}$" + }, + "metabase.lib.schema.literal..string.datetime" : { + "anyOf" : [ { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + }, { + "type" : "string", + "pattern" : "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + } ] + }, + "metabase.lib.schema.literal..string.time" : { + "anyOf" : [ { + "type" : "string", + "pattern" : "^\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?$" + }, { + "type" : "string", + "pattern" : "^\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))$" + } ] + }, + "metabase.lib.schema.literal..string.zone-offset" : { + "type" : "string", + "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" + }, + "metabase.lib.schema.literal.date" : { + "anyOf" : [ { }, { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.date" + } ] + }, + "metabase.lib.schema.literal.datetime" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.datetime" + }, { }, { }, { } ] + }, + "metabase.lib.schema.literal.time" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.time" + }, { }, { } ] + }, + "metabase.lib.schema.metadata..column.has-field-values" : { + "type" : "string", + "enum" : [ "auto-list", "list", "none", "search" ] + }, + "metabase.lib.schema.metadata..column.legacy-source" : { + "description" : "Possible values for `column.source` -- this is added by [[metabase.lib.metadata.result-metadata]] for historical\n reasons (it is used in a few places in the FE). DO NOT use this in the backend for any purpose, use `:lib/source`\n instead.", + "type" : "string", + "enum" : [ "aggregation", "fields", "breakout", "native" ] + }, + "metabase.lib.schema.metadata..column.remapping.external" : { + "description" : "External remapping (Dimension) for a column. From the [[metabase.warehouse-schema.models.dimension]] with `type =\n external` associated with a `Field` in the application database.\n See [[metabase.query-processor.middleware.add-dimension-projections]] for what this means.", + "type" : "object", + "properties" : { + "field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dimension" + }, + "lib/type" : { + "const" : "metadata.column.remapping/external" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + }, + "required" : [ "lib/type", "id", "name", "field-id" ] + }, + "metabase.lib.schema.metadata..column.remapping.internal" : { + "description" : "Internal remapping (FieldValues) for a column. From [[metabase.warehouse-schema.models.dimension]] with `type =\n internal` and the [[metabase.warehouse-schema.models.field-values]] associated with a `Field` in the application\n database. See [[metabase.query-processor.middleware.add-dimension-projections]] for what this means.", + "type" : "object", + "properties" : { + "human-readable-values" : { + "type" : "array", + "items" : { } + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.dimension" + }, + "lib/type" : { + "const" : "metadata.column.remapping/internal" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "values" : { + "type" : "array", + "items" : { } + } + }, + "required" : [ "lib/type", "id", "name", "values", "human-readable-values" ] + }, + "metabase.lib.schema.metadata..column.source" : { + "description" : "`:lib/source` -- where a column came from with respect to the current stage.\n\n Traditionally, `:lib/source` meant something slightly different -- it denoted what part of the current stage a\n column came from, and thus included two additional options -- `:source/fields`, for columns used by `:fields`, and\n `:source/breakouts`, for columns used in `:breakout`. This was not really useful information and made `:lib/source`\n itself useless for determining if a column was 'inherited' or not (i.e., whether it came from a previous stage,\n source card, or a join, and should get field name refs instead of field ID refs --\n see [[metabase.lib.field.util/inherited-column?]]).", + "type" : "string", + "enum" : [ "source/card", "source/native", "source/previous-stage", "source/table-defaults", "source/aggregations", "source/joins", "source/expressions", "source/implicitly-joinable" ] + }, + "metabase.lib.schema.metadata..column.validate-expression-source" : { + "description" : "Only allow `:lib/expression-name` when `:lib/source` is `:source/expressions`. If it's anything else, it probably\n means it's getting incorrectly propagated from a previous stage (QUE-1342)." + }, + "metabase.lib.schema.metadata..column.validate-native-column" : { + "description" : "Certain keys cannot possibly be set when a column comes from directly from native query results, for example\n `:lib/breakout?` or join aliases" + }, + "metabase.lib.schema.metadata..column.validate-table-defaults-column" : { + "description" : "A column with :lib/source :source/table-defaults cannot possibly have a join alias." + }, + "metabase.lib.schema.metadata..column.visibility-type" : { + "type" : "string", + "enum" : [ "retired", "sensitive", "normal", "hidden", "details-only" ] + }, + "metabase.lib.schema.metadata.column" : { + "description" : "Malli schema for a valid map of column metadata, which can mean one of two things:\n\n 1. Metadata about a particular Field in the application database. This will always have an `:id`\n\n 2. Results metadata from a column in `data.cols` and/or `data.results_metadata.columns` in a Query Processor\n response, or saved in something like `Card.result_metadata`. These *may* have an `:id`, or may not -- columns\n coming back from native queries or things like `SELECT count(*)` aren't associated with any particular `Field`\n and thus will not have an `:id`.\n\n Now maybe these should be two different schemas, but `:id` being there or not is the only real difference; besides\n that they are largely compatible. So they're the same for now. We can revisit this in the future if we actually want\n to differentiate between the two versions.", + "allOf" : [ { + "type" : "object", + "properties" : { + "visibility-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "fk-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/external-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.external" + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "lib/source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.source-column-alias" + }, + "database-type" : { + "type" : "string" + }, + "lib/type" : { + "default" : "metadata/column", + "const" : "metadata/column" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "display-name" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/deduplicated-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.deduplicated-name" + }, + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/original-expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "fk-field-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "type" : "string" + }, + "lib/card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "lib/expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/breakout?" : { + "type" : "boolean" + }, + "metabase.lib.field/temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "metabase.lib.field/binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/model-display-name" : { + "type" : "string" + }, + "has-field-values" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.has-field-values" + }, + "lib/internal-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.internal" + }, + "selected?" : { + "type" : "boolean" + }, + "source-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "metabase.lib.join/join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "lib/original-binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/original-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "lib/original-display-name" : { + "type" : "string" + }, + "lib/source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.source" + }, + "active" : { + "type" : "boolean" + }, + "lib/ref-display-name" : { + "type" : "string" + }, + "lib/original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "lib/hack-original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "fk-target-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "lib/desired-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.desired-column-alias" + } + }, + "required" : [ "lib/type", "name", "base-type" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.kebab-cased-map" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-expression-source" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-native-column" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-table-defaults-column" + } ] + }, + "metabase.lib.schema.metadata.deduplicated-name" : { + "type" : "string", + "description" : "The simply-deduplicated name that was historically used in QP results metadata (originally calculated by\n the [[metabase.query-processor.middleware.annotate]] middleware, now calculated\n by [[metabase.lib.middleware.result-metadata]]). This just adds suffixes to column names e.g. `ID` and `ID` become\n `ID` and `ID_2`, respectively. Kept around because many old field refs use this column name.", + "optional" : true + }, + "metabase.lib.schema.metadata.desired-column-alias" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.global" : { + "description" : "Fingerprint values that Fields of all types should have.", + "type" : "object", + "properties" : { + "distinct-count" : { + "type" : "integer" + }, + "nil%" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.number" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Number`.", + "type" : "object", + "properties" : { + "avg" : { + "type" : "number" + }, + "max" : { + "type" : "number" + }, + "min" : { + "type" : "number" + }, + "q1" : { + "type" : "number" + }, + "q3" : { + "type" : "number" + }, + "sd" : { + "type" : "number" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.temporal" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Temporal`.", + "type" : "object", + "properties" : { + "earliest" : { + "type" : "string" + }, + "latest" : { + "type" : "string" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.text" : { + "description" : "Schema for fingerprint information for Fields deriving from `:type/Text`.", + "type" : "object", + "properties" : { + "average-length" : { + "type" : "number" + }, + "percent-email" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-json" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-state" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, + "percent-url" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + } + } + }, + "metabase.lib.schema.metadata.fingerprint..fingerprint.type-specific" : { + "description" : "Schema for type-specific fingerprint information.", + "allOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "properties" : { } + } + }, { + "type" : "object", + "properties" : { + "type/DateTime" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.temporal" + }, + "type/Number" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.number" + }, + "type/Text" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.text" + } + } + } ] + }, + "metabase.lib.schema.metadata.fingerprint.fingerprint" : { + "description" : "Schema for a Field 'fingerprint' generated as part of the analysis stage. Used to power the 'classification'\n sub-stage of analysis. Stored as the `fingerprint` column of Field.", + "type" : "object", + "properties" : { + "experimental" : { + "type" : "object", + "additionalProperties" : { } + }, + "global" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.global" + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint..fingerprint.type-specific" + } + } + }, + "metabase.lib.schema.metadata.fingerprint.percent" : { + "description" : "Schema for something represting a percentage. A floating-point value between (inclusive) 0 and 1.", + "type" : "number" + }, + "metabase.lib.schema.metadata.kebab-cased-map" : { }, + "metabase.lib.schema.metadata.lib-or-legacy-column" : { + "description" : "Schema for the maps in card `:result-metadata` and similar. These can be either\n `:metabase.lib.schema.metadata/result-metadata` (i.e., kebab-cased) maps, or map snake_cased as returned by QP\n metadata, but they should NOT be a mixture of both -- if we mixed them somehow there is a bug in our code.", + "oneOf" : [ { + "description" : "Malli schema for a valid map of column metadata, which can mean one of two things:\n\n 1. Metadata about a particular Field in the application database. This will always have an `:id`\n\n 2. Results metadata from a column in `data.cols` and/or `data.results_metadata.columns` in a Query Processor\n response, or saved in something like `Card.result_metadata`. These *may* have an `:id`, or may not -- columns\n coming back from native queries or things like `SELECT count(*)` aren't associated with any particular `Field`\n and thus will not have an `:id`.\n\n Now maybe these should be two different schemas, but `:id` being there or not is the only real difference; besides\n that they are largely compatible. So they're the same for now. We can revisit this in the future if we actually want\n to differentiate between the two versions.", + "allOf" : [ { + "type" : "object", + "properties" : { + "visibility-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.visibility-type" + }, + "fk-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/external-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.external" + }, + "inherited-temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "lib/source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.source-column-alias" + }, + "database-type" : { + "type" : "string" + }, + "lib/type" : { + "default" : "metadata/column", + "const" : "metadata/column" + }, + "fingerprint" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.fingerprint" + }, + "display-name" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "effective-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/deduplicated-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.deduplicated-name" + }, + "base-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.base-type" + }, + "lib/original-expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "fk-field-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "type" : "string" + }, + "lib/card-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.card" + }, + "lib/expression-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "lib/breakout?" : { + "type" : "boolean" + }, + "metabase.lib.field/temporal-unit" : { + "$ref" : "#/components/schemas/metabase.lib.schema.temporal-bucketing.unit" + }, + "metabase.lib.field/binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/model-display-name" : { + "type" : "string" + }, + "has-field-values" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.has-field-values" + }, + "lib/internal-remap" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.remapping.internal" + }, + "selected?" : { + "type" : "boolean" + }, + "source-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.legacy-source" + }, + "metabase.lib.join/join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "fk-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "lib/original-binning" : { + "$ref" : "#/components/schemas/metabase.lib.schema.binning.binning" + }, + "lib/original-join-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.join.alias" + }, + "lib/original-display-name" : { + "type" : "string" + }, + "lib/source" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.source" + }, + "active" : { + "type" : "boolean" + }, + "lib/ref-display-name" : { + "type" : "string" + }, + "lib/original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "lib/hack-original-name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.original-name" + }, + "semantic-type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.semantic-or-relation-type" + }, + "fk-target-field-id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.Reference" + }, + "lib/desired-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.desired-column-alias" + } + }, + "required" : [ "lib/type", "name", "base-type" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.kebab-cased-map" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-expression-source" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-native-column" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata..column.validate-table-defaults-column" + } ] + }, { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.legacy-column-metadata" + } ] + }, + "metabase.lib.schema.metadata.original-name" : { + "type" : "string", + "description" : "The original name of the column as it appeared in the very first place it came from (i.e., the physical name of the\n column in the table it appears in). This should be the same as the `:lib/source-column-alias` for the very first\n usage of the column.\n Allowed to be blank because some databases like SQL Server allow blank column names.", + "optional" : true + }, + "metabase.lib.schema.metadata.source-column-alias" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "metabase.lib.schema.parameter..dimension.target" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-field-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-expression-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + } ] + }, + "metabase.lib.schema.parameter.DimensionOptions" : { + "type" : "object", + "properties" : { + "stage-number" : { + "type" : "integer" + } + } + }, + "metabase.lib.schema.parameter.dimension" : { }, + "metabase.lib.schema.parameter.legacy-expression-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.expression" + }, + "metabase.lib.schema.parameter.legacy-field-ref" : { + "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.field" + }, + "metabase.lib.schema.parameter.parameter" : { + "type" : "object", + "properties" : { + "default" : { }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "name" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "required" : { }, + "slug" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + }, + "target" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.target" + }, + "type" : { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.type" + }, + "value" : { } + }, + "required" : [ "type" ] + }, + "metabase.lib.schema.parameter.target" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.legacy-field-ref" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.dimension" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.variable" + } ] + }, + "metabase.lib.schema.parameter.template-tag" : { + "type" : "array", + "prefixItems" : [ { + "const" : "template-tag" + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } + }, + "required" : [ "id" ] + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + } ] + } ] + }, + "metabase.lib.schema.parameter.type" : { + "type" : "string", + "enum" : [ "category", "date", "string/!=", "number/=", "string/ends-with", "location/state", "boolean/=", "number/between", "date/all-options", "number", "number/>=", "location/country", "temporal-unit", "string/=", "string/does-not-contain", "date/range", "string/starts-with", "string/contains", "date/single", "location/city", "id", "date/relative", "location/zip_code", "date/month-year", "date/quarter-year", "number/!=", "boolean", "text", "number/<=" ] + }, + "metabase.lib.schema.parameter.variable" : { + "type" : "array", + "prefixItems" : [ { + "const" : "variable" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + } ] + }, + "metabase.lib.schema.parameter.widget-type" : { + "type" : "string", + "enum" : [ "none", "category", "date", "string/!=", "number/=", "string/ends-with", "location/state", "boolean/=", "number/between", "date/all-options", "number", "number/>=", "location/country", "temporal-unit", "string/=", "string/does-not-contain", "date/range", "string/starts-with", "string/contains", "date/single", "location/city", "id", "date/relative", "location/zip_code", "date/month-year", "date/quarter-year", "number/!=", "boolean", "text", "number/<=" ] + }, + "metabase.lib.schema.template-tag..raw-value.type" : { + "type" : "string", + "enum" : [ "date", "number", "boolean", "text" ] + }, + "metabase.lib.schema.temporal-bucketing.unit" : { + "type" : "string", + "enum" : [ "quarter", "day", "hour", "week", "second", "default", "day-of-week", "hour-of-day", "month", "month-of-year", "day-of-month", "year", "day-of-year", "millisecond", "year-of-era", "second-of-minute", "week-of-year", "quarter-of-year", "minute-of-hour", "minute" ] + }, + "metabase.logger.api.log-level" : { + "type" : "string", + "enum" : [ "off", "fatal", "error", "warn", "info", "debug", "trace" ] + }, + "metabase.logger.api.time-unit" : { + "type" : "string", + "enum" : [ "days", "hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds" ] + }, + "metabase.notification.models.FullyHydratedNotification" : { + "description" : "Fully hydrated notification.", + "oneOf" : [ { + "oneOf" : [ { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" + }, + "payload_id" : { + "type" : "null" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type", "payload" ] + }, { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload_id" : { + "type" : "null" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type" ] + } ] + }, { + "oneOf" : [ { + "type" : "object", + "properties" : { + "creator" : { + "type" : "object", + "properties" : { } + }, + "creator_id" : { + "type" : "integer" + }, + "handlers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "channel" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel" + }, + "channel_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "channel_type" : { }, + "notification_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "recipients" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, + "template" : { + "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplate" + }, + "template_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "channel_type" ] + } + }, + "payload" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" + }, + "payload_id" : { + "type" : "integer" + }, + "payload_type" : { + "type" : "string", + "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] + }, + "subscriptions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" + } + } + }, + "required" : [ "payload_type", "payload" ] + }, { "type" : "object", "properties" : { "creator" : { "type" : "object", "properties" : { } }, + "creator_id" : { + "type" : "integer" + }, "handlers" : { "type" : "array", "items" : { @@ -1434,11 +4557,8 @@ "required" : [ "channel_type" ] } }, - "payload" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" - }, "payload_id" : { - "type" : "null" + "type" : "integer" }, "payload_type" : { "type" : "string", @@ -1451,8 +4571,8 @@ } } }, - "required" : [ "payload_type", "payload" ] - }, { } ] + "required" : [ "payload_type" ] + } ] }, { "oneOf" : [ { "type" : "object", @@ -1461,9 +4581,6 @@ "type" : "object", "properties" : { } }, - "creator_id" : { - "type" : "integer" - }, "handlers" : { "type" : "array", "items" : { @@ -1507,13 +4624,6 @@ "payload" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" }, - "payload_id" : { - "type" : "integer" - }, - "payload_type" : { - "type" : "string", - "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] - }, "subscriptions" : { "type" : "array", "items" : { @@ -1521,10 +4631,8 @@ } } }, - "required" : [ "payload_type", "payload" ] - }, { } ] - }, { - "oneOf" : [ { + "required" : [ "payload" ] + }, { "type" : "object", "properties" : { "creator" : { @@ -1571,18 +4679,14 @@ "required" : [ "channel_type" ] } }, - "payload" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard" - }, "subscriptions" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" } } - }, - "required" : [ "payload" ] - }, { } ] + } + } ] } ] }, "metabase.notification.models.Notification" : { @@ -1898,6 +5002,16 @@ } } }, + "metabase.timeline.api.timeline.Timeline" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id" ] + }, "metabase.timeline.api.timeline.include" : { "type" : "string", "enum" : [ "events" ] @@ -1957,6 +5071,18 @@ } }, "required" : [ "schedule_type" ] + }, + "metabot.reaction.redirect" : { + "type" : "object", + "properties" : { + "type" : { + "const" : "metabot.reaction/redirect" + }, + "url" : { + "type" : "string" + } + }, + "required" : [ "type", "url" ] } } }, @@ -1975,12 +5101,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "post" : { "summary" : "POST /api/action/", "description" : "Create a new action.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2085,6 +5233,17 @@ "summary" : "GET /api/action/public", "description" : "Fetch a list of Actions with public UUIDs. These actions are publicly-accessible *if* public sharing is enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2102,6 +5261,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "delete" : { @@ -2117,6 +5287,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2142,6 +5323,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2159,6 +5351,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2278,6 +5481,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2311,6 +5525,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] }, "delete" : { @@ -2326,6 +5551,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/action" ] } }, @@ -2334,6 +5570,17 @@ "summary" : "GET /api/activity/most_recently_viewed_dashboard", "description" : "Get the most recently viewed dashboard for the current user. Returns a 204 if the user has not viewed any dashboards\n in the last 24 hours.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2342,6 +5589,17 @@ "summary" : "GET /api/activity/popular_items", "description" : "Get the list of 5 popular things on the instance. Query takes 8 and limits to 5 so that if it finds anything\n archived, deleted, etc it can usually still get 5. ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2350,6 +5608,17 @@ "summary" : "GET /api/activity/recent_views", "description" : "Get a list of 100 models (cards, models, tables, dashboards, and collections) that the current user has been viewing most\n recently. Return a maximum of 20 model of each, if they've looked at at least 20.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] } }, @@ -2377,12 +5646,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/activity" ] }, "post" : { "summary" : "POST /api/activity/recents", "description" : "Adds a model to the list of recently selected items.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2433,6 +5724,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2450,6 +5752,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2467,6 +5780,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/alert" ] } }, @@ -2475,6 +5799,17 @@ "summary" : "GET /api/analytics/anonymous-stats", "description" : "Anonymous usage stats. Endpoint for testing, and eventually exposing this to instance admins to let them see\n what is being phoned home.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/analytics" ] } }, @@ -2483,6 +5818,17 @@ "summary" : "POST /api/api-key/", "description" : "Create a new API key (and an associated `User`) with the provided name and group ID.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2510,6 +5856,17 @@ "summary" : "GET /api/api-key/", "description" : "Get a list of API keys with the default scope. Non-paginated.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2518,6 +5875,17 @@ "summary" : "GET /api/api-key/count", "description" : "Get the count of API keys in the DB with the default scope.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2535,6 +5903,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -2570,6 +5949,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2587,6 +5977,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/api-key" ] } }, @@ -2604,6 +6005,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2626,6 +6038,17 @@ "type" : "integer" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2654,6 +6077,17 @@ } ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2698,6 +6132,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2751,6 +6196,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2806,6 +6262,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2870,6 +6337,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2917,6 +6395,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2933,6 +6422,17 @@ "enum" : [ "adhoc", "transform", "table", "question", "field", "segment", "model" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -2982,6 +6482,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -3040,6 +6551,17 @@ }, "description" : "invalid show value" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -3048,6 +6570,17 @@ "summary" : "GET /api/bookmark/", "description" : "Fetch all bookmarks for the user", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] } }, @@ -3056,6 +6589,17 @@ "summary" : "PUT /api/bookmark/ordering", "description" : "Sets the order of bookmarks for user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3111,6 +6655,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] }, "delete" : { @@ -3134,6 +6689,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bookmark" ] } }, @@ -3142,6 +6708,17 @@ "summary" : "GET /api/bug-reporting/connection-pool-details", "description" : "Returns database connection pool info for the current Metabase instance.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bug-reporting" ] } }, @@ -3150,6 +6727,17 @@ "summary" : "GET /api/bug-reporting/details", "description" : "Returns version and system information relevant to filing a bug report against Metabase.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/bug-reporting" ] } }, @@ -3189,12 +6777,34 @@ }, "description" : "Model id to get configuration for." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cache" ] }, "put" : { "summary" : "PUT /api/cache/", "description" : "Store cache configuration.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3225,6 +6835,17 @@ "summary" : "DELETE /api/cache/", "description" : "Delete cache configurations.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3304,6 +6925,17 @@ }, "description" : "A list of question ids" } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cache" ] } }, @@ -3330,12 +6962,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "post" : { "summary" : "POST /api/card/", "description" : "Create a new `Card`. Card `type` can be `question`, `metric`, or `model`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3425,6 +7079,17 @@ "summary" : "POST /api/card/collections", "description" : "Bulk update endpoint for Card Collections. Move a set of `Cards` with `card_ids` into a `Collection` with\n `collection_id`, or remove them from any Collections by passing a `null` `collection_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3458,6 +7123,17 @@ "summary" : "GET /api/card/embeddable", "description" : "Fetch a list of Cards where `enable_embedding` is `true`. The cards can be embedded using the embedding endpoints\n and a signed JWT.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3475,6 +7151,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3497,6 +7184,17 @@ "summary" : "GET /api/card/public", "description" : "Fetch a list of Cards with public UUIDs. These cards are publicly-accessible *if* public sharing is enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3530,6 +7228,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3555,6 +7264,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3572,6 +7292,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "delete" : { @@ -3587,6 +7318,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3599,11 +7341,28 @@ "name" : "card-id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3652,6 +7411,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3691,10 +7461,16 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } }, { "in" : "query", "name" : "ignore_view", @@ -3711,6 +7487,17 @@ "enum" : [ "collection" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] }, "put" : { @@ -3733,6 +7520,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3834,6 +7632,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3851,6 +7660,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3868,6 +7688,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3899,6 +7730,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3911,11 +7753,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3953,6 +7812,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/card" ] } }, @@ -3961,6 +7831,17 @@ "summary" : "POST /api/cards/dashboards", "description" : "Get the dashboards that multiple cards appear in. The response is a sequence of maps, each of which has a `card_id`\n and `dashboards`. `dashboard` may include an `:error` key, either `:unreadable-dashboard` or\n `:unwritable-dashboard`. In the case of an `unreadable-dashboard` the dashboard details (name, ID) will NOT be\n present.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -3989,6 +7870,17 @@ "summary" : "POST /api/cards/move", "description" : "Moves a number of Cards to a single collection or dashboard.\n\n For now, just either succeed or fail as a batch - we can think more about error handling later down the road.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4027,6 +7919,17 @@ "summary" : "GET /api/channel/", "description" : "Get all channels", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4048,6 +7951,17 @@ "summary" : "POST /api/channel/", "description" : "Create a channel", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4087,6 +8001,17 @@ "summary" : "POST /api/channel/test", "description" : "Test a channel connection", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4123,6 +8048,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/channel" ] }, "put" : { @@ -4138,6 +8074,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4175,12 +8122,34 @@ "summary" : "POST /api/cloud-migration/", "description" : "Initiate a new cloud migration.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] }, "get" : { "summary" : "GET /api/cloud-migration/", "description" : "Get the latest cloud migration, if any.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] } }, @@ -4189,6 +8158,17 @@ "summary" : "PUT /api/cloud-migration/cancel", "description" : "Cancel any ongoing cloud migrations, if any.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/cloud-migration" ] } }, @@ -4229,12 +8209,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "post" : { "summary" : "POST /api/collection/", "description" : "Create a new Collection.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4284,6 +8286,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "put" : { @@ -4306,6 +8319,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4346,6 +8370,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4354,6 +8389,24 @@ "summary" : "GET /api/collection/root/dashboard-question-candidates", "description" : "Find cards in the root collection that can be moved into dashboards in the root collection. (Same as the above\n endpoint, but for the root collection)", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:data -> , :name -> , :description -> , :sole_dashboard_info -> , :name -> , :description -> }>}>, :total -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4435,6 +8488,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4443,6 +8507,24 @@ "summary" : "POST /api/collection/root/move-dashboard-question-candidates", "description" : "Move candidate cards to the dashboards they appear in (for the root collection)", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:moved -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.MoveDashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4472,6 +8554,17 @@ "summary" : "GET /api/collection/trash", "description" : "Fetch the trash collection, as in `/api/collection/:trash-id`", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4521,6 +8614,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4533,11 +8637,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] }, "put" : { @@ -4553,6 +8674,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4603,6 +8735,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:data -> , :name -> , :description -> , :sole_dashboard_info -> , :name -> , :description -> }>}>, :total -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.DashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4615,10 +8765,16 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } }, { "in" : "query", "name" : "models", @@ -4686,6 +8842,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/collection" ] } }, @@ -4703,6 +8870,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:moved -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.collections.api.MoveDashboardQuestionCandidatesResponse" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4740,12 +8925,34 @@ "enum" : [ "all", "mine", "archived" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "post" : { "summary" : "POST /api/dashboard/", "description" : "Create a new Dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4794,6 +9001,17 @@ "summary" : "GET /api/dashboard/embeddable", "description" : "Fetch a list of Dashboards where `enable_embedding` is `true`. The dashboards can be embedded using the embedding\n endpoints and a signed JWT.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4826,6 +9044,17 @@ } } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4861,6 +9090,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -4899,6 +9139,17 @@ "summary" : "GET /api/dashboard/public", "description" : "Fetch a list of Dashboards with public UUIDs. These dashboards are publicly-accessible *if* public sharing is\n enabled.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4907,6 +9158,17 @@ "summary" : "POST /api/dashboard/save", "description" : "Save a denormalized description of dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4924,6 +9186,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -4959,6 +9232,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5035,6 +9319,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5113,6 +9408,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "post" : { @@ -5137,6 +9443,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5169,6 +9486,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -5184,6 +9512,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5201,6 +9540,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5246,11 +9596,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -5266,6 +9633,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] }, "put" : { @@ -5281,6 +9659,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5447,6 +9836,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5554,6 +9954,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5585,6 +9996,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5610,6 +10032,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5627,6 +10060,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5639,11 +10083,28 @@ "name" : "id", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "description" : "String must be a valid 21-character NanoID string.", + "type" : "string", + "pattern" : "^[A-Za-z0-9_\\-]{21}$" + } ] + } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5661,6 +10122,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/dashboard" ] } }, @@ -5726,12 +10198,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] }, "post" : { "summary" : "POST /api/database/", "description" : "Add a new `Database`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5790,6 +10284,17 @@ "summary" : "POST /api/database/sample_database", "description" : "Add the sample database as a new `Database`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5798,6 +10303,17 @@ "summary" : "POST /api/database/validate", "description" : "Validate that we can connect to a database given a set of details.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5864,6 +10380,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] }, "put" : { @@ -5879,6 +10406,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -5947,6 +10485,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -5980,6 +10529,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6012,6 +10572,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6029,6 +10600,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6046,6 +10628,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6063,6 +10656,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6080,6 +10684,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6097,6 +10712,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6146,6 +10772,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6163,6 +10800,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6196,6 +10844,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6229,6 +10888,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6262,6 +10932,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6279,6 +10960,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6296,6 +10988,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6313,6 +11016,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6321,6 +11035,17 @@ "summary" : "GET /api/database/{virtual-db}/datasets", "description" : "Returns a list of all the datasets found for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6329,6 +11054,17 @@ "summary" : "GET /api/database/{virtual-db}/datasets/{schema}", "description" : "Returns a list of Tables for the datasets virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6337,6 +11073,17 @@ "summary" : "GET /api/database/{virtual-db}/metadata", "description" : "Endpoint that provides metadata for the Saved Questions 'virtual' database. Used for fooling the frontend\n and allowing it to treat the Saved Questions virtual DB just like any other database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6345,6 +11092,17 @@ "summary" : "GET /api/database/{virtual-db}/schema/{schema}", "description" : "Returns a list of Tables for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6353,6 +11111,17 @@ "summary" : "GET /api/database/{virtual-db}/schemas", "description" : "Returns a list of all the schemas found for the saved questions virtual database.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/database" ] } }, @@ -6361,6 +11130,17 @@ "summary" : "POST /api/dataset/", "description" : "Execute a query and retrieve the results in the usual format. The query will not use the cache.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6383,6 +11163,17 @@ "summary" : "POST /api/dataset/native", "description" : "Fetch a native version of an MBQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6412,6 +11203,17 @@ "summary" : "POST /api/dataset/parameter/remapping", "description" : "Return the remapped parameter values for cards or dashboards that are being edited.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6450,6 +11252,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6479,6 +11292,17 @@ "summary" : "POST /api/dataset/parameter/values", "description" : "Return parameter values for cards or dashboards that are being edited.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6508,6 +11332,17 @@ "summary" : "POST /api/dataset/pivot", "description" : "Generate a pivoted dataset for an ad-hoc query", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6533,6 +11368,17 @@ "summary" : "POST /api/dataset/query_metadata", "description" : "Get all of the required query metadata for an ad-hoc query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6565,6 +11411,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6602,6 +11459,17 @@ "summary" : "GET /api/ee/advanced-permissions/application/graph", "description" : "Fetch a graph of Application Permissions.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/application" ] }, "put" : { @@ -6624,6 +11492,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6660,6 +11539,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/impersonation" ] } }, @@ -6677,6 +11567,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/advanced-permissions/impersonation" ] } }, @@ -6685,6 +11586,17 @@ "summary" : "POST /api/ee/ai-entity-analysis/analyze-chart", "description" : "Analyze a chart image using an AI vision model. This function sends the image data to a separate external AI service for analysis.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6732,6 +11644,17 @@ "summary" : "POST /api/ee/ai-sql-fixer/fix", "description" : "Suggest fixes for a SQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6766,6 +11689,17 @@ "summary" : "POST /api/ee/ai-sql-generation/generate", "description" : "Generate a SQL query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6795,6 +11729,17 @@ "summary" : "GET /api/ee/audit-app/user/audit-info", "description" : "Gets audit info for the current user if he has permissions to access the audit collection.\n Otherwise return an empty map.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/audit-app/user" ] } }, @@ -6812,6 +11757,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/audit-app/user" ] } }, @@ -6820,6 +11776,17 @@ "summary" : "POST /api/ee/autodescribe/card/summarize", "description" : "Summarize a question.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -6900,6 +11867,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/autodescribe" ] } }, @@ -6908,6 +11886,17 @@ "summary" : "GET /api/ee/billing/", "description" : "Get billing information. This acts as a proxy between `metabase-billing-info-url` and the client,\n using the embedding token and signed in user's email to fetch the billing information.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/billing" ] } }, @@ -6916,6 +11905,17 @@ "summary" : "GET /api/ee/content-translation/csv", "description" : "Provides content translation dictionary in CSV", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -6931,6 +11931,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -6939,6 +11950,17 @@ "summary" : "POST /api/ee/content-translation/upload-dictionary", "description" : "Upload a CSV of content translations", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -6964,6 +11986,60 @@ "tags" : [ "/api/ee/content-translation" ] } }, + "/api/ee/database-replication/connection/{database-id}" : { + "post" : { + "summary" : "POST /api/ee/database-replication/connection/{database-id}", + "description" : "Create a new PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/database-replication" ] + }, + "delete" : { + "summary" : "DELETE /api/ee/database-replication/connection/{database-id}", + "description" : "Delete PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/database-replication" ] + } + }, "/api/ee/database-routing/destination-database" : { "post" : { "summary" : "POST /api/ee/database-routing/destination-database", @@ -6976,6 +12052,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7028,6 +12115,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7046,11 +12144,111 @@ "tags" : [ "/api/ee/database-routing" ] } }, + "/api/ee/email/override" : { + "put" : { + "summary" : "PUT /api/ee/email/override", + "description" : "Update multiple cloud email Settings. You must be a superuser or have `setting` permission to do this.\n Calling this automatically sets `cloud-smtp-enabled` to true if the settings are valid.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email-smtp-host-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-password-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-port-override" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "email-smtp-security-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-username-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/email" ] + }, + "delete" : { + "summary" : "DELETE /api/ee/email/override", + "description" : "Clear all cloud email related settings. You must be a superuser or have `setting` permission to do this.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/email" ] + } + }, "/api/ee/gsheets/connection" : { "post" : { "summary" : "POST /api/ee/gsheets/connection", "description" : "Hook up a new google drive folder or sheet that will be watched and have its content ETL'd into Metabase.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:error -> , :message -> }, or one of , :created_at -> , :sync_started_at -> , :created_by_id -> , :db_id -> } | active = map where {:url -> , :created_at -> , :last_sync_at -> , :next_sync_at -> , :created_by_id -> , :db_id -> } | error = map where {:url -> , :created_at -> , :error_message -> , :created_by_id -> , :db_id -> }> dispatched by :status", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7073,12 +12271,41 @@ "summary" : "GET /api/ee/gsheets/connection", "description" : "Check the status of a connection. This endpoint gets polled by FE to determine when to\n stop showing the setup widget.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:error -> , :message -> }, or one of , :created_at -> , :sync_started_at -> , :created_by_id -> , :db_id -> } | active = map where {:url -> , :created_at -> , :last_sync_at -> , :next_sync_at -> , :created_by_id -> , :db_id -> } | error = map where {:url -> , :created_at -> , :error_message -> , :created_by_id -> , :db_id -> }> dispatched by :status", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] }, "delete" : { "summary" : "DELETE /api/ee/gsheets/connection", "description" : "Disconnect the google service account. There is only one (or zero) at the time of writing.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7087,6 +12314,17 @@ "summary" : "POST /api/ee/gsheets/connection/sync", "description" : "Force a sync of the connection now.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7095,6 +12333,30 @@ "summary" : "GET /api/ee/gsheets/service-account", "description" : "Checks to see if service-account is setup or not, delegates to HM only if we haven't set it from a metabase cluster\n before.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:email -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" + } + }, + "required" : [ ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/gsheets" ] } }, @@ -7112,6 +12374,17 @@ }, "description" : "Must be a string like 2020-04 or 2222-11." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/logs" ] } }, @@ -7120,6 +12393,32 @@ "summary" : "POST /api/ee/metabot-tools/answer-sources", "description" : "Return top level meta information about available information sources.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7148,6 +12447,35 @@ "summary" : "POST /api/ee/metabot-tools/create-dashboard-subscription", "description" : "Create a dashboard subscription.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:output -> , :conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "output" : { + "type" : "string" + } + }, + "required" : [ "output", "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7176,6 +12504,32 @@ "summary" : "POST /api/ee/metabot-tools/field-values", "description" : "Return statistics and/or values for a given field of a given entity.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7204,6 +12558,32 @@ "summary" : "POST /api/ee/metabot-tools/filter-records", "description" : "Construct a query from a metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7232,6 +12612,32 @@ "summary" : "POST /api/ee/metabot-tools/find-metric", "description" : "Find a metric matching a description.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7266,6 +12672,32 @@ "summary" : "POST /api/ee/metabot-tools/find-outliers", "description" : "Find outliers in the values provided by a data source for a given column.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7294,6 +12726,41 @@ "summary" : "POST /api/ee/metabot-tools/generate-insights", "description" : "Generate insights.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:output -> , :reactions -> , :url -> }>, :conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "output" : { + "type" : "string" + }, + "reactions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabot.reaction.redirect" + } + } + }, + "required" : [ "output", "reactions", "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7322,6 +12789,32 @@ "summary" : "POST /api/ee/metabot-tools/get-current-user", "description" : "Get information about user that started the conversation.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7339,6 +12832,32 @@ "summary" : "POST /api/ee/metabot-tools/get-dashboard-details", "description" : "Get information about a given dashboard.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7373,6 +12892,32 @@ "summary" : "POST /api/ee/metabot-tools/get-metric-details", "description" : "Get information about a given metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7401,6 +12946,32 @@ "summary" : "POST /api/ee/metabot-tools/get-query-details", "description" : "Get information about a given query.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7436,6 +13007,32 @@ "summary" : "POST /api/ee/metabot-tools/get-report-details", "description" : "Get information about a given report.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7464,6 +13061,32 @@ "summary" : "POST /api/ee/metabot-tools/get-table-details", "description" : "Get information about a given table or model.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7492,6 +13115,32 @@ "summary" : "POST /api/ee/metabot-tools/query-metric", "description" : "Construct a query from a metric.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7520,6 +13169,32 @@ "summary" : "POST /api/ee/metabot-tools/query-model", "description" : "Construct a query from a model.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:conversation_id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "conversation_id" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7548,6 +13223,17 @@ "summary" : "GET /api/ee/metabot-v3/metabot/", "description" : "List configured metabot instances", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7564,6 +13250,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7580,6 +13277,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "put" : { @@ -7594,6 +13302,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7655,6 +13374,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7694,6 +13424,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "delete" : { @@ -7708,6 +13449,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7724,6 +13476,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7748,6 +13511,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -7756,6 +13530,17 @@ "summary" : "POST /api/ee/metabot-v3/v2/agent", "description" : "Send a chat message to the LLM via the AI Service.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7798,6 +13583,17 @@ "summary" : "POST /api/ee/metabot-v3/v2/agent-streaming", "description" : "Send a chat message to the LLM via the AI Proxy.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7835,48 +13631,39 @@ "tags" : [ "/api/ee/metabot-v3" ] } }, - "/api/ee/permission_debug/" : { - "get" : { - "summary" : "GET /api/ee/permission_debug/", - "description" : "This endpoint expects a `user_id`, a `model_id` to debug permissions against, and `action_type`.\n The type of model we are debugging against is inferred by the `action_type`.\n\n It will return:\n - `decision`: The overall permission decision (\"allow\", \"denied\", or \"limited\")\n - `model-type`: The type of model being checked (e.g., \"question\")\n - `model-id`: The ID of the model being checked\n - `segment`: A set of segmentation types applied (e.g., \"sandboxed\", \"impersonated\", \"routed\")\n - `message`: A sequence of strings explaining the decision\n - `data`: A map containing details about permissions (table or collection names to group names)\n - `suggestions`: A map of group IDs to group names that could provide access\n\n Example requests:\n - Check if user can read a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/read`\n - Check if user can query a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/query`\n - Check if user can download data: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/download-data`\n\n Example responses:\n - Allowed access:\n ```json\n {\n \"decision\": \"allow\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to read this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```\n - Denied access with blocked table:\n ```json\n {\n \"decision\": \"denied\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User does not have permission to query this card\"],\n \"data\": {\"sample-db.PUBLIC.ORDERS\": [\"All Users\"]},\n \"suggestions\": {}\n }\n ```\n - Limited access:\n ```json\n {\n \"decision\": \"limited\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to download some data from this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```", - "parameters" : [ { - "in" : "query", - "name" : "user_id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - } - }, { - "in" : "query", - "name" : "model_id", - "required" : true, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "action_type", - "required" : true, - "schema" : { - "type" : "string", - "enum" : [ "card/read", "card/query", "card/download-data" ] - } - } ], - "tags" : [ "/api/ee/permission_debug" ] - } - }, "/api/ee/scim/api_key" : { "get" : { "summary" : "GET /api/ee/scim/api_key", "description" : "Fetch the SCIM API key if one exists. Does *not* return an unmasked key, since we don't have access\n to that after it is created.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim" ] }, "post" : { "summary" : "POST /api/ee/scim/api_key", "description" : "Create a new SCIM API key, or refresh one that already exists. When called for the first time,\n this is equivalent to enabling SCIM.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim" ] } }, @@ -7911,12 +13698,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "post" : { "summary" : "POST /api/ee/scim/v2/Groups", "description" : "Create a single group, and populates it if necessary.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -7977,12 +13786,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "put" : { "summary" : "PUT /api/ee/scim/v2/Groups/{id}", "description" : "Update a group.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8041,6 +13872,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] } }, @@ -8075,12 +13917,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "post" : { "summary" : "POST /api/ee/scim/v2/Users", "description" : "Create a single user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8184,12 +14048,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/scim/v2" ] }, "put" : { "summary" : "PUT /api/ee/scim/v2/Users/{id}", "description" : "Update a user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8291,6 +14177,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8423,7 +14320,18 @@ "default" : false, "type" : "boolean" } - } ], + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/serialization" ] } }, @@ -8448,6 +14356,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -8532,6 +14451,17 @@ "enum" : [ "asc", "desc" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/stale" ] } }, @@ -8540,6 +14470,17 @@ "summary" : "GET /api/ee/upload-management/tables", "description" : "Get all `Tables` visible to the current user which were created by uploading a file.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/upload-management" ] } }, @@ -8565,6 +14506,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/ee/upload-management" ] } }, @@ -8573,6 +14525,17 @@ "summary" : "POST /api/eid-translation/translate", "description" : "Translate entity IDs to model IDs.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -8597,12 +14560,59 @@ "summary" : "PUT /api/email/", "description" : "Update multiple email Settings. You must be a superuser or have `setting` permission to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { "schema" : { "type" : "object", - "properties" : { } + "properties" : { + "email-smtp-host" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-password" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-port" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "email-smtp-security" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-username" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } } } } @@ -8613,6 +14623,17 @@ "summary" : "DELETE /api/email/", "description" : "Clear all email related settings. You must be a superuser or have `setting` permission to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/email" ] } }, @@ -8621,6 +14642,17 @@ "summary" : "POST /api/email/test", "description" : "Send a test email using the SMTP Settings. You must be a superuser or have `setting` permission to do this.\n Returns `{:ok true}` if we were able to send the message successfully, otherwise a standard 400 error response.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/email" ] } }, @@ -8636,6 +14668,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8665,6 +14708,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8673,6 +14727,17 @@ "summary" : "GET /api/embed/card/{token}/params/{param-key}/search/{prefix}", "description" : "Embedded version of chain filter search endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8695,6 +14760,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8710,6 +14786,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8748,6 +14835,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8763,6 +14861,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8796,6 +14905,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8845,6 +14965,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8853,6 +14984,17 @@ "summary" : "GET /api/embed/dashboard/{token}/params/{param-key}/remapping", "description" : "Embedded version of the remapped dashboard param value endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8861,6 +15003,17 @@ "summary" : "GET /api/embed/dashboard/{token}/params/{param-key}/search/{prefix}", "description" : "Embedded version of chain filter search endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8883,6 +15036,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8898,6 +15062,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8931,6 +15106,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -8992,6 +15178,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -9071,6 +15268,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/embed" ] } }, @@ -9096,6 +15304,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] }, "put" : { @@ -9111,6 +15330,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9188,6 +15418,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9228,6 +15469,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9245,6 +15497,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9262,6 +15525,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9296,6 +15570,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9313,6 +15598,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9347,6 +15643,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9364,6 +15671,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] } }, @@ -9381,6 +15699,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/field" ] }, "post" : { @@ -9396,6 +15725,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9439,6 +15779,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/geojson" ] } }, @@ -9455,6 +15806,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/geojson" ] } }, @@ -9463,6 +15825,17 @@ "summary" : "PUT /api/google/settings", "description" : "Update Google Sign-In related settings. You must be a superuser to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9491,6 +15864,17 @@ "summary" : "PUT /api/ldap/settings", "description" : "Update LDAP related settings. You must be a superuser to do this.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9523,6 +15907,17 @@ "summary" : "POST /api/logger/adjustment", "description" : "Temporarily adjust the log levels.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9548,6 +15943,17 @@ "summary" : "DELETE /api/logger/adjustment", "description" : "Undo any log level adjustments.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9556,6 +15962,17 @@ "summary" : "GET /api/logger/logs", "description" : "Logs.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9564,6 +15981,51 @@ "summary" : "GET /api/logger/presets", "description" : "Get all known presets.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "sequence of map where {:id -> , :display_name -> , :loggers -> , :level -> }>}", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "display_name" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "loggers" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "level" : { + "$ref" : "#/components/schemas/metabase.logger.api.log-level" + }, + "name" : { + "type" : "string" + } + }, + "required" : [ "name", "level" ] + } + } + }, + "required" : [ "id", "display_name", "loggers" ] + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/logger" ] } }, @@ -9572,6 +16034,17 @@ "summary" : "GET /api/login-history/current", "description" : "Fetch recent logins for the current user.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/login-history" ] } }, @@ -9580,6 +16053,17 @@ "summary" : "POST /api/model-index/", "description" : "Create ModelIndex.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9614,6 +16098,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] } }, @@ -9631,6 +16126,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] }, "delete" : { @@ -9646,6 +16152,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/model-index" ] } }, @@ -9654,6 +16171,17 @@ "summary" : "POST /api/moderation-review/", "description" : "Create a new `ModerationReview`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9707,12 +16235,34 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] }, "post" : { "summary" : "POST /api/mt/gtap/", "description" : "Create a new GTAP.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9749,6 +16299,17 @@ "summary" : "POST /api/mt/gtap/validate", "description" : "Validate a sandbox which may not have yet been saved. This runs the same validation that is performed when the\n sandbox is saved, but doesn't actually save the sandbox.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9788,6 +16349,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] }, "put" : { @@ -9803,6 +16375,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9835,6 +16418,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/gtap" ] } }, @@ -9843,6 +16437,17 @@ "summary" : "GET /api/mt/user/attributes", "description" : "Fetch a list of possible keys for User `login_attributes`. This just looks at keys that have already been set for\n existing Users and returns those. ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/mt/user" ] } }, @@ -9860,6 +16465,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9892,12 +16508,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/native-query-snippet" ] }, "post" : { "summary" : "POST /api/native-query-snippet/", "description" : "Create a new `NativeQuerySnippet`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -9941,6 +16579,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/native-query-snippet" ] }, "put" : { @@ -9956,6 +16605,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10043,12 +16703,34 @@ "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] }, "post" : { "summary" : "POST /api/notification/", "description" : "Create a new notification, return the created notification.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10066,6 +16748,17 @@ "summary" : "POST /api/notification/send", "description" : "Send an unsaved notification.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10083,6 +16776,17 @@ "summary" : "POST /api/notification/unsubscribe/", "description" : "Allow non-users to unsubscribe from notifications, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10114,6 +16818,17 @@ "summary" : "POST /api/notification/unsubscribe/undo", "description" : "Allow non-users to undo an unsubscribe from notifications, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10154,6 +16869,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] }, "put" : { @@ -10169,6 +16895,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10195,6 +16932,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10231,6 +16979,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/notification" ] } }, @@ -10239,6 +16998,17 @@ "summary" : "POST /api/notify/db/attached_datawarehouse", "description" : "Sync the attached datawarehouse. Can provide in the body:\n - table_name and schema_name: both strings. Will look for an existing table and sync it, otherwise will try to find a\n new table with that name and sync it. If it cannot find a table it will throw an error. If table_name is empty or\n blank, will sync the entire database.\n - synchronous?: is a boolean value to indicate if this should block on the result.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10279,6 +17049,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10320,6 +17101,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10348,6 +17140,17 @@ "summary" : "GET /api/permissions/graph", "description" : "Fetch a graph of all Permissions.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "put" : { @@ -10370,6 +17173,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10397,6 +17211,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10414,6 +17239,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10422,12 +17258,34 @@ "summary" : "GET /api/permissions/group", "description" : "Fetch all `PermissionsGroups`, including a count of the number of `:members` in that group.\n This API requires superuser or group manager of more than one group.\n Group manager is only available if `advanced-permissions` is enabled and returns only groups that user\n is manager of.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "post" : { "summary" : "POST /api/permissions/group", "description" : "Create a new `PermissionsGroup`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10461,6 +17319,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10492,6 +17361,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10509,6 +17389,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10517,12 +17408,34 @@ "summary" : "GET /api/permissions/membership", "description" : "Fetch a map describing the group memberships of various users.\n This map's format is:\n\n { [{:membership_id \n :group_id \n :is_group_manager boolean}]}", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] }, "post" : { "summary" : "POST /api/permissions/membership", "description" : "Add a `User` to a `PermissionsGroup`. Returns updated list of members belonging to the group.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10566,6 +17479,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10583,6 +17507,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10613,6 +17548,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/permissions" ] } }, @@ -10621,6 +17567,17 @@ "summary" : "GET /api/persist/", "description" : "List the entries of [[PersistedInfo]] in order to show a status page.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10638,6 +17595,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10655,6 +17623,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10672,6 +17651,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10689,6 +17679,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10706,6 +17707,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10723,6 +17735,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10731,6 +17754,17 @@ "summary" : "POST /api/persist/disable", "description" : "Disable global setting to allow databases to persist models. This will remove all tasks to refresh tables, remove\n that option from databases which might have it enabled, and delete all cached tables.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10739,6 +17773,17 @@ "summary" : "POST /api/persist/enable", "description" : "Enable global setting to allow databases to persist models.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10747,6 +17792,17 @@ "summary" : "POST /api/persist/set-refresh-schedule", "description" : "Set the cron schedule to refresh persisted models.\n Shape should be JSON like {cron: \"0 30 1/8 * * ? *\"}.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -10781,6 +17837,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/persist" ] } }, @@ -10789,6 +17856,17 @@ "summary" : "GET /api/premium-features/token/status", "description" : "Fetch info about the current Premium-Features premium features token including whether it is `valid`, a `trial` token, its\n `features`, when it is `valid-thru`, and the `status` of the account.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/premium-features" ] } }, @@ -10805,6 +17883,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10834,6 +17923,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10850,6 +17950,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10866,6 +17977,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10900,6 +18022,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10908,6 +18041,17 @@ "summary" : "GET /api/preview_embed/dashboard/{token}/params/{param-key}/remapping", "description" : "Embedded version of the remapped dashboard param value endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10916,6 +18060,17 @@ "summary" : "GET /api/preview_embed/dashboard/{token}/params/{param-key}/values", "description" : "Embedded version of chain filter values endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10932,6 +18087,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10966,6 +18132,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/preview_embed" ] } }, @@ -10974,6 +18151,17 @@ "summary" : "POST /api/product-feedback/", "description" : "Endpoint to provide feedback from the product", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11015,6 +18203,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11032,6 +18231,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11064,6 +18274,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11094,6 +18315,17 @@ "required" : true, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11127,6 +18359,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11152,6 +18395,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11177,6 +18431,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11225,6 +18490,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11242,6 +18518,17 @@ }, "description" : "value must be a valid UUID." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11285,6 +18572,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11327,6 +18625,17 @@ "$ref" : "#/components/schemas/metabase.query-processor.schema.export-format" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11388,6 +18697,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] }, "post" : { @@ -11412,6 +18732,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11457,6 +18788,17 @@ "required" : true, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11490,6 +18832,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11515,6 +18868,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11558,6 +18922,17 @@ "minimum" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11583,6 +18958,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11626,6 +19012,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11689,6 +19086,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11770,6 +19178,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/public" ] } }, @@ -11803,12 +19222,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] }, "post" : { "summary" : "POST /api/pulse/", "description" : "Create a new `Pulse`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11861,6 +19302,17 @@ "summary" : "GET /api/pulse/form_input", "description" : "Provides relevant configuration information and user choices for creating/updating Pulses.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11878,6 +19330,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11895,6 +19358,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11912,6 +19386,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11929,6 +19414,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -11937,6 +19433,17 @@ "summary" : "POST /api/pulse/test", "description" : "Test send an unsaved pulse.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -11982,6 +19489,17 @@ "summary" : "POST /api/pulse/unsubscribe/", "description" : "Allow non-users to unsubscribe from pulses/subscriptions, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12013,6 +19531,17 @@ "summary" : "POST /api/pulse/unsubscribe/undo", "description" : "Allow non-users to undo an unsubscribe from pulses/subscriptions, with the hash given through email.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12053,6 +19582,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] }, "put" : { @@ -12068,6 +19608,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12124,6 +19675,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/pulse" ] } }, @@ -12149,6 +19711,17 @@ "enum" : [ "card", "dashboard", "segment" ] } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/revision" ] } }, @@ -12157,6 +19730,17 @@ "summary" : "POST /api/revision/revert", "description" : "Revert an object to a prior revision.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12208,13 +19792,24 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/revision" ] } }, "/api/search/" : { "get" : { "summary" : "GET /api/search/", - "description" : "Search for items in Metabase.\n For the list of supported models, check [[metabase.search.config/all-models]].\n\n Filters:\n - `archived`: set to true to search archived items only, default is false\n - `table_db_id`: search for tables, cards, and models of a certain DB\n - `models`: only search for items of specific models. If not provided, search for all models\n - `filters_items_in_personal_collection`: only search for items in personal collections\n - `created_at`: search for items created at a specific timestamp\n - `created_by`: search for items created by a specific user\n - `last_edited_at`: search for items last edited at a specific timestamp\n - `last_edited_by`: search for items last edited by a specific user\n - `search_native_query`: set to true to search the content of native queries\n - `verified`: set to true to search for verified items only (requires Content Management or Official Collections premium feature)\n - `ids`: search for items with those ids, works iff single value passed to `models`\n\n Note that not all item types support all filters, and the results will include only models that support the provided filters. For example:\n - The `created-by` filter supports dashboards, models, actions, and cards.\n - The `verified` filter supports models and cards.\n\n A search query that has both filters applied will only return models and cards.", + "description" : "Search for items in Metabase.\n For the list of supported models, check [[metabase.search.config/all-models]].\n\n Filters:\n - `archived`: set to true to search archived items only, default is false\n - `table_db_id`: search for tables, cards, and models of a certain DB\n - `models`: only search for items of specific models. If not provided, search for all models\n - `filters_items_in_personal_collection`: only search for items in personal collections\n - `created_at`: search for items created at a specific timestamp\n - `created_by`: search for items created by a specific user\n - `last_edited_at`: search for items last edited at a specific timestamp\n - `last_edited_by`: search for items last edited by a specific user\n - `search_native_query`: set to true to search the content of native queries\n - `verified`: set to true to search for verified items only (requires Content Management or Official Collections premium feature)\n - `ids`: search for items with those ids, works iff single value passed to `models`\n - `display_type`: search for cards/models with specific display types\n - `has_temporal_dimensions`: set to true to search for cards with temporal dimensions only\n\n Note that not all item types support all filters, and the results will include only models that support the provided filters. For example:\n - The `created-by` filter supports dashboards, models, actions, and cards.\n - The `verified` filter supports models and cards.\n\n A search query that has both filters applied will only return models and cards.", "parameters" : [ { "in" : "query", "name" : "q", @@ -12286,6 +19881,24 @@ "minimum" : 1 } } + }, { + "in" : "query", + "name" : "display_type", + "required" : false, + "schema" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, { + "in" : "query", + "name" : "has_temporal_dimensions", + "required" : false, + "schema" : { + "type" : "boolean" + } }, { "in" : "query", "name" : "last_edited_at", @@ -12371,6 +19984,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12379,6 +20003,17 @@ "summary" : "POST /api/search/force-reindex", "description" : "This will trigger an immediate reindexing, if we are using search index.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12387,6 +20022,17 @@ "summary" : "POST /api/search/re-init", "description" : "This will blow away any search indexes, re-create, and re-populate them.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12408,6 +20054,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] }, "put" : { @@ -12427,6 +20084,17 @@ "required" : false, "schema" : { } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/search" ] } }, @@ -12435,6 +20103,17 @@ "summary" : "POST /api/segment/", "description" : "Create a new `Segment`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12470,6 +20149,17 @@ "summary" : "GET /api/segment/", "description" : "Fetch *all* `Segments`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12487,6 +20177,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] }, "put" : { @@ -12502,6 +20203,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12564,6 +20276,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12581,6 +20304,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/segment" ] } }, @@ -12589,6 +20323,17 @@ "summary" : "POST /api/session/", "description" : "Login.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12615,6 +20360,17 @@ "summary" : "DELETE /api/session/", "description" : "Logout.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12623,6 +20379,17 @@ "summary" : "POST /api/session/forgot_password", "description" : "Send a reset email when user has forgotten their password.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12647,6 +20414,17 @@ "summary" : "POST /api/session/google_auth", "description" : "Login with Google Auth.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12671,6 +20449,17 @@ "summary" : "POST /api/session/password-check", "description" : "Endpoint that checks if the supplied password meets the currently configured password complexity rules.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12703,6 +20492,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12711,6 +20511,17 @@ "summary" : "GET /api/session/properties", "description" : "Get all properties and their values. These are the specific `Settings` that are readable by the current user, or are\n public if no user is logged in.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/session" ] } }, @@ -12719,6 +20530,17 @@ "summary" : "POST /api/session/reset_password", "description" : "Reset password with a reset token.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12747,12 +20569,34 @@ "summary" : "GET /api/setting/", "description" : "Get all `Settings` and their values. You must be a superuser or have `setting` permission to do this.\n For non-superusers, a list of visible settings and values can be retrieved using the /api/session/properties endpoint.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setting" ] }, "put" : { "summary" : "PUT /api/setting/", "description" : "Update multiple `Settings` values. If called by a non-superuser, only user-local settings can be updated.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12778,6 +20622,17 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setting" ] }, "put" : { @@ -12791,6 +20646,30 @@ "type" : "string" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "value" : { } + }, + "required" : [ "value" ] + } + } + } + }, "tags" : [ "/api/setting" ] } }, @@ -12799,6 +20678,17 @@ "summary" : "POST /api/setup/", "description" : "Special endpoint for creating the first user during setup. This endpoint both creates the user AND logs them in and\n returns a session ID. This endpoint can also be used to add a database, create and invite a second admin, and/or\n set specific settings from the setup flow.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12878,6 +20768,17 @@ "summary" : "GET /api/setup/user_defaults", "description" : "Returns object containing default user details for initial setup, if configured,\n and if the provided token value matches the token in the configuration value.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/setup" ] } }, @@ -12886,6 +20787,17 @@ "summary" : "POST /api/slack/bug-report", "description" : "Send diagnostic information to the configured Slack channels.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12909,6 +20821,17 @@ "summary" : "GET /api/slack/manifest", "description" : "Returns the YAML manifest file that should be used to bootstrap new Slack apps", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/slack" ] } }, @@ -12917,6 +20840,17 @@ "summary" : "PUT /api/slack/settings", "description" : "Update Slack related settings. You must be a superuser to do this. Also updates the slack-cache.\n There are 3 cases where we alter the slack channel/user cache:\n 1. falsy token -> clear\n 2. invalid token -> clear\n 3. truthy, valid token -> refresh ", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -12943,12 +20877,34 @@ "summary" : "GET /api/table/", "description" : "Get all `Tables`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] }, "put" : { "summary" : "PUT /api/table/", "description" : "Update all `Table` in `ids`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13009,6 +20965,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13026,6 +20993,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13050,6 +21028,17 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] }, "put" : { @@ -13065,6 +21054,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13120,6 +21120,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13159,6 +21170,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13176,6 +21198,30 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "map where {:success -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "success" : { + "const" : true + } + }, + "required" : [ "success" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13207,6 +21253,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13248,6 +21305,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13265,6 +21333,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/table" ] } }, @@ -13282,6 +21361,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13299,104 +21389,413 @@ "required" : [ "filename", "tempfile" ] } }, - "required" : [ "file" ] + "required" : [ "file" ] + } + } + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{id}/rescan_values" : { + "post" : { + "summary" : "POST /api/table/{id}/rescan_values", + "description" : "Manually trigger an update for the FieldValues for the Fields belonging to this Table. Only applies to Fields that\n are eligible for FieldValues.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{id}/sync_schema" : { + "post" : { + "summary" : "POST /api/table/{id}/sync_schema", + "description" : "Trigger a manual update of the schema metadata for this `Table`.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{table-id}/data" : { + "get" : { + "summary" : "GET /api/table/{table-id}/data", + "description" : "Get the data for the given table", + "parameters" : [ { + "in" : "path", + "name" : "table-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/task/" : { + "get" : { + "summary" : "GET /api/task/", + "description" : "Fetch a list of recent tasks stored as Task History", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/info" : { + "get" : { + "summary" : "GET /api/task/info", + "description" : "Return raw data about all scheduled tasks (i.e., Quartz Jobs and Triggers).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/unique-tasks" : { + "get" : { + "summary" : "GET /api/task/unique-tasks", + "description" : "Returns possibly empty vector of unique task names in alphabetical order. It is expected that number of unique\n tasks is small, hence no need for pagination. If that changes this endpoint and function that powers it should\n reflect that.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/task/{id}" : { + "get" : { + "summary" : "GET /api/task/{id}", + "description" : "Get `TaskHistory` entry with ID.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/task" ] + } + }, + "/api/testing/echo" : { + "post" : { + "summary" : "POST /api/testing/echo", + "description" : "Simple echo hander. Fails when you POST with `?fail=true`.", + "parameters" : [ { + "in" : "query", + "name" : "fail", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + }, + "get" : { + "summary" : "GET /api/testing/echo", + "description" : "Simple echo hander. Fails when you GET with `?fail=true`.", + "parameters" : [ { + "in" : "query", + "name" : "fail", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "body", + "required" : true, + "schema" : { + "type" : "string" + }, + "description" : "value must be a valid JSON string." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + } + }, + "/api/testing/mark-stale" : { + "post" : { + "summary" : "POST /api/testing/mark-stale", + "description" : "Mark the card or dashboard as stale", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "date-str" : { + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "model" : { + "type" : "string" + } + }, + "required" : [ "id", "model" ] } } } }, - "tags" : [ "/api/table" ] + "tags" : [ "/api/testing" ] } }, - "/api/table/{id}/rescan_values" : { + "/api/testing/refresh-caches" : { "post" : { - "summary" : "POST /api/table/{id}/rescan_values", - "description" : "Manually trigger an update for the FieldValues for the Fields belonging to this Table. Only applies to Fields that\n are eligible for FieldValues.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 + "summary" : "POST /api/testing/refresh-caches", + "description" : "Manually triggers the cache refresh task, if Enterprise code is available.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, - "description" : "value must be an integer greater than zero." - } ], - "tags" : [ "/api/table" ] + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/table/{id}/sync_schema" : { + "/api/testing/restore/{name}" : { "post" : { - "summary" : "POST /api/table/{id}/sync_schema", - "description" : "Trigger a manual update of the schema metadata for this `Table`.", + "summary" : "POST /api/testing/restore/{name}", + "description" : "Restore a database snapshot for testing purposes.", "parameters" : [ { "in" : "path", - "name" : "id", + "name" : "name", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "type" : "string", + "minLength" : 1 + } } ], - "tags" : [ "/api/table" ] - } - }, - "/api/table/{table-id}/data" : { - "get" : { - "summary" : "GET /api/table/{table-id}/data", - "description" : "Get the data for the given table", - "parameters" : [ { - "in" : "path", - "name" : "table-id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 + "responses" : { + "2XX" : { + "description" : "Successful response" }, - "description" : "value must be an integer greater than zero." - } ], - "tags" : [ "/api/table" ] - } - }, - "/api/task/" : { - "get" : { - "summary" : "GET /api/task/", - "description" : "Fetch a list of recent tasks stored as Task History", - "parameters" : [ ], - "tags" : [ "/api/task" ] - } - }, - "/api/task/info" : { - "get" : { - "summary" : "GET /api/task/info", - "description" : "Return raw data about all scheduled tasks (i.e., Quartz Jobs and Triggers).", - "parameters" : [ ], - "tags" : [ "/api/task" ] + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/task/unique-tasks" : { - "get" : { - "summary" : "GET /api/task/unique-tasks", - "description" : "Returns possibly empty vector of unique task names in alphabetical order. It is expected that number of unique\n tasks is small, hence no need for pagination. If that changes this endpoint and function that powers it should\n reflect that.", + "/api/testing/set-time" : { + "post" : { + "summary" : "POST /api/testing/set-time", + "description" : "Make java-time see world at exact time.", "parameters" : [ ], - "tags" : [ "/api/task" ] + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "add-ms" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "time" : { + "description" : "value must be a valid date string", + "type" : "string" + } + } + } + } + } + }, + "tags" : [ "/api/testing" ] } }, - "/api/task/{id}" : { - "get" : { - "summary" : "GET /api/task/{id}", - "description" : "Get `TaskHistory` entry with ID.", + "/api/testing/snapshot/{name}" : { + "post" : { + "summary" : "POST /api/testing/snapshot/{name}", + "description" : "Snapshot the database for testing purposes.", "parameters" : [ { "in" : "path", - "name" : "id", + "name" : "name", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "type" : "string", + "minLength" : 1 + } } ], - "tags" : [ "/api/task" ] + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] + } + }, + "/api/testing/stats" : { + "post" : { + "summary" : "POST /api/testing/stats", + "description" : "Triggers a send of instance usage stats", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/testing" ] } }, "/api/tiles/{card-id}/{zoom}/{x}/{y}/{lat-field}/{lon-field}" : { @@ -13459,6 +21858,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13540,6 +21950,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13556,6 +21977,17 @@ }, "description" : "value must be a valid JSON string." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/tiles" ] } }, @@ -13564,6 +21996,17 @@ "summary" : "POST /api/timeline-event/", "description" : "Create a new [[TimelineEvent]].", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13631,6 +22074,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline-event" ] }, "put" : { @@ -13646,6 +22100,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13701,6 +22166,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline-event" ] } }, @@ -13709,6 +22185,24 @@ "summary" : "POST /api/timeline/", "description" : "Create a new [[Timeline]].", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13764,6 +22258,27 @@ "type" : "boolean" } } ], + "responses" : { + "2XX" : { + "description" : "sequence of map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13787,6 +22302,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13819,6 +22345,17 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13867,6 +22404,24 @@ }, "description" : "value must be a valid date string" } ], + "responses" : { + "2XX" : { + "description" : "map where {:id -> }", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.timeline.api.timeline.Timeline" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] }, "put" : { @@ -13882,6 +22437,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -13930,6 +22496,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/timeline" ] } }, @@ -13938,6 +22515,17 @@ "summary" : "POST /api/upload/csv", "description" : "Create a table and model populated with the values from the attached CSV. Returns the model ID if successful.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -13980,6 +22568,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] } }, @@ -14004,6 +22603,17 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14041,12 +22651,34 @@ "minLength" : 1 } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] }, "delete" : { "summary" : "DELETE /api/user-key-value/namespace/{namespace}/key/{key}", "description" : "Deletes a KV-pair for the user", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user-key-value" ] } }, @@ -14086,12 +22718,34 @@ "default" : false } } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] }, "post" : { "summary" : "POST /api/user/", "description" : "Create a new `User`, return a 400 if the email address is already taken", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14135,6 +22789,17 @@ "summary" : "GET /api/user/current", "description" : "Fetch the current `User`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14143,6 +22808,17 @@ "summary" : "GET /api/user/recipients", "description" : "Fetch a list of `Users`. Returns only active users. Meant for non-admins unlike GET /api/user.\n\n - If user-visibility is :all or the user is an admin, include all users.\n - If user-visibility is :group, include only users in the same group (excluding the all users group).\n - If user-visibility is :none or the user is sandboxed, include only themselves.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14160,6 +22836,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] }, "put" : { @@ -14175,6 +22862,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14235,6 +22933,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14252,6 +22961,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14269,6 +22989,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "requestBody" : { "content" : { "application/json" : { @@ -14302,6 +23033,17 @@ }, "description" : "value must be an integer greater than zero." } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/user" ] } }, @@ -14310,6 +23052,17 @@ "summary" : "GET /api/util/random_token", "description" : "Return a cryptographically secure random 32-byte token, encoded as a hexadecimal string.\n Intended for use when creating a value for `embedding-secret-key`.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, "tags" : [ "/api/util" ] } } diff --git a/_site/docs/master/configuring-metabase/appearance.html b/_site/docs/master/configuring-metabase/appearance.html index e7c10b1a90..ece8bd1ba5 100644 --- a/_site/docs/master/configuring-metabase/appearance.html +++ b/_site/docs/master/configuring-metabase/appearance.html @@ -4895,7 +4895,7 @@

      Further reading

      @@ -5113,12 +5113,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5132,6 +5126,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5148,24 +5143,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/caching.html b/_site/docs/master/configuring-metabase/caching.html index b89d763036..9f68944703 100644 --- a/_site/docs/master/configuring-metabase/caching.html +++ b/_site/docs/master/configuring-metabase/caching.html @@ -5190,12 +5190,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5209,6 +5203,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5225,24 +5220,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/config-file.html b/_site/docs/master/configuring-metabase/config-file.html index e82e2892fe..15f46b0a5c 100644 --- a/_site/docs/master/configuring-metabase/config-file.html +++ b/_site/docs/master/configuring-metabase/config-file.html @@ -5211,12 +5211,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5230,6 +5224,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5246,24 +5241,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/config-template.html b/_site/docs/master/configuring-metabase/config-template.html index a69023d2bb..e1e7bf0840 100644 --- a/_site/docs/master/configuring-metabase/config-template.html +++ b/_site/docs/master/configuring-metabase/config-template.html @@ -5171,12 +5171,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5190,6 +5184,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5206,24 +5201,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/custom-maps.html b/_site/docs/master/configuring-metabase/custom-maps.html index f5f77b44f1..c382ccb230 100644 --- a/_site/docs/master/configuring-metabase/custom-maps.html +++ b/_site/docs/master/configuring-metabase/custom-maps.html @@ -4972,12 +4972,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4991,6 +4985,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5007,24 +5002,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html b/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html index 75a4008845..868ea2b6a5 100644 --- a/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html +++ b/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html @@ -4948,12 +4948,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4967,6 +4961,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -4983,24 +4978,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/email.html b/_site/docs/master/configuring-metabase/email.html index 1a1d7caad5..de888e66f9 100644 --- a/_site/docs/master/configuring-metabase/email.html +++ b/_site/docs/master/configuring-metabase/email.html @@ -5097,12 +5097,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5116,6 +5110,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5132,24 +5127,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/environment-variables.html b/_site/docs/master/configuring-metabase/environment-variables.html index 51fb5fcea1..65cee2aace 100644 --- a/_site/docs/master/configuring-metabase/environment-variables.html +++ b/_site/docs/master/configuring-metabase/environment-variables.html @@ -7665,12 +7665,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -7684,6 +7678,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -7700,24 +7695,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/fonts.html b/_site/docs/master/configuring-metabase/fonts.html index e4069949c4..3850c4fb54 100644 --- a/_site/docs/master/configuring-metabase/fonts.html +++ b/_site/docs/master/configuring-metabase/fonts.html @@ -5057,12 +5057,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5076,6 +5070,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5092,24 +5087,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/localization.html b/_site/docs/master/configuring-metabase/localization.html index a1f3fb0d36..13178fd447 100644 --- a/_site/docs/master/configuring-metabase/localization.html +++ b/_site/docs/master/configuring-metabase/localization.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4698,11 +4698,17 @@
      Other resources

      Languages and localization

      -

      The Localization settings allow you to set global defaults for your Metabase instance. You can find Localization under Admin settings > Settings.

      +

      Admins can update the localization settings for the instance:

      -

      Default language

      +
        +
      1. Click on the gear icon in the upper right.
      2. +
      3. Click Admin settings.
      4. +
      5. In the Settings tab, click on Localization in the left sidebar.
      6. +
      -

      Here you can set the default language (also called the “instance language”) across your Metabase UI, system emails, dashboard subscriptions, and alerts. People can pick a different language from their own account settings.

      +

      These localization settings allow you to set global language and formatting defaults for dates, times, numbers, and currencies.

      + +

      You can also override these localization options for specific fields or questions. For more info, see Formatting.

      Supported languages

      @@ -4865,7 +4871,9 @@

      Supported languages

      Translations

      -

      Our community contributes to Metabase translations on our Crowdin project. If you’d like to help make Metabase available in a language you’re fluent in, we’d love your help!

      +

      Our community contributes to Metabase translations on our Crowdin project.

      + +

      If you’d like to help make Metabase available in a language you’re fluent in, we’d love your help!

      For a new language to be added to Metabase, it must reach 100%. Once it does, we add it in the next major or minor release of Metabase. All existing languages in Metabase must stay at 100% to continue being included in the next major version of Metabase. This rule ensures that no one encounters a confusing mishmash of English and another language when using Metabase.

      @@ -4873,7 +4881,21 @@

      Translations

      Note that while we only remove languages in major releases, we are happy to add them back for minor releases, so it’s always a good time to jump in and start translating.

      -

      Report timezone

      +

      Contributing to translations for Metabase

      + +

      If you’d like to help make Metabase available in a language you’re fluent in, we’d love your help! Check out our Crowdin project.

      + +

      Instance settings

      + +

      Instance language

      + +

      Here you can set the default language (also called the “instance language”) across your Metabase UI, system emails, dashboard subscriptions, and alerts.

      + +

      People can override these settings in their personal account settings.

      + +

      Some translations are created by the Metabase community, and might not be perfect.

      + +

      Report timezone

      Use report timezone to set a default display time zone for dates and times in Metabase. The report timezone setting is a display setting only, so changing the report timezone won’t affect the time zone of any data in your database.

      @@ -4923,37 +4945,35 @@

      Report timezone

    • Vertica
    • -

      First day of the week

      - -

      If you need to, you can change the first day of the week for your instance (the default is Sunday). Setting the first day of the week affects things like grouping by week and filtering in questions built using the query builder. This setting doesn’t affect SQL queries.

      +

      First day of the week

      -

      Localization options

      +

      If you need to, you can change the first day of the week for your instance (the default is Sunday).

      -

      Localization options allow you to set global default display formats for dates, times, numbers, and currencies.

      +

      Setting the first day of the week affects how the query builder filters or groups by week. People can, however, use the week function to override this default when filtering or grouping by week of year. See using a different first week of the year.

      -

      You can also override these localization options for specific fields or questions. For more info, see Formatting.

      +

      This setting doesn’t affect SQL queries.

      -

      Dates and times

      +

      Dates and times

      • Date style: the way dates should be displayed in tables, axis labels, and tooltips.
      • -
      • Date separators: you can choose between slashes (2022/12/14), dashes (2022-12-14), and dots (2022.12.14.).
      • +
      • Date separators: you can choose between slashes (2022/12/14), dashes (2022-12-14), and dots (2022.12.14).
      • Abbreviate names of days and months: whenever a date is displayed with the day of the week and/or the month written out, turning this setting on will display e.g. “January” as “Jan” or “Monday” as “Mon”.
      • Time style: choose to display the time using either a 12 or 24-hour clock (e.g., 3:00 PM or 15:00).
      -

      Numbers

      +

      Numbers

      • Separator style: some people use commas to separate thousands places, and others use periods. Here’s where you can indicate which camp you belong to.
      -

      Currency

      +

      Currency

      • Unit of currency: if you do most of your business in a particular currency, you can specify that here.
      • Currency label style: whether you want to have your currencies labeled with a symbol, a code (like “USD”), or its full name.
      • -
      • Where to display the unit of currency: this pertains specifically to tables, and lets you choose if you want the currency labels to appear only in the column heading, or next to each value in the column.
      • +
      • Where to display the unit of currency: this pertains specifically to tables, and lets you choose whether you want the currency labels to appear only in the column heading, or next to each value in the column.
      @@ -5171,12 +5191,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5190,6 +5204,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5206,24 +5221,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/log-configuration.html b/_site/docs/master/configuring-metabase/log-configuration.html index a3e13bdd74..de5f10de89 100644 --- a/_site/docs/master/configuring-metabase/log-configuration.html +++ b/_site/docs/master/configuring-metabase/log-configuration.html @@ -5020,12 +5020,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5039,6 +5033,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5055,24 +5050,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/setting-up-metabase.html b/_site/docs/master/configuring-metabase/setting-up-metabase.html index c29a929fe0..029a0a2b86 100644 --- a/_site/docs/master/configuring-metabase/setting-up-metabase.html +++ b/_site/docs/master/configuring-metabase/setting-up-metabase.html @@ -4730,7 +4730,7 @@

      What will you use Metabase for?

      Gathering your database info

      -

      At this point you’ll need to gather some information about the database you want to use with Metabase. We won’t be able to connect to your database without it, but you’d like to deal with all of this later, that’s okay: just click I’ll add my data later. Metabase comes with a Sample Database that you can play around with to get a feel for how Metabase works.

      +

      At this point you’ll need to gather some information about the database you want to use with Metabase. We won’t be able to connect to your database without it, but you’d like to deal with all of this later, that’s okay: just click I’ll add my data later. Metabase comes with a Sample Database that you can play around with to get a feel for how Metabase works.

      If you’re ready to connect, here’s what you’ll need:

      @@ -5003,12 +5003,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5022,6 +5016,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5038,24 +5033,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/settings.html b/_site/docs/master/configuring-metabase/settings.html index 14383a2cd1..331e058ae2 100644 --- a/_site/docs/master/configuring-metabase/settings.html +++ b/_site/docs/master/configuring-metabase/settings.html @@ -4984,12 +4984,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5003,6 +4997,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5019,24 +5014,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/slack.html b/_site/docs/master/configuring-metabase/slack.html index c0305c94b6..ef6040a158 100644 --- a/_site/docs/master/configuring-metabase/slack.html +++ b/_site/docs/master/configuring-metabase/slack.html @@ -5008,12 +5008,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5027,6 +5021,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5043,24 +5038,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/start.html b/_site/docs/master/configuring-metabase/start.html index 7ef47462b2..07053a4d29 100644 --- a/_site/docs/master/configuring-metabase/start.html +++ b/_site/docs/master/configuring-metabase/start.html @@ -4973,12 +4973,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4992,6 +4986,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5008,24 +5003,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/timezones.html b/_site/docs/master/configuring-metabase/timezones.html index 0f0c436491..5308e050e3 100644 --- a/_site/docs/master/configuring-metabase/timezones.html +++ b/_site/docs/master/configuring-metabase/timezones.html @@ -4985,12 +4985,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5004,6 +4998,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5020,24 +5015,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/configuring-metabase/webhooks.html b/_site/docs/master/configuring-metabase/webhooks.html index b1475014d9..d97290d3e3 100644 --- a/_site/docs/master/configuring-metabase/webhooks.html +++ b/_site/docs/master/configuring-metabase/webhooks.html @@ -5033,12 +5033,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5052,6 +5046,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5068,24 +5063,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/dashboards/actions.html b/_site/docs/master/dashboards/actions.html index 4e65b54c65..efc4aa3183 100644 --- a/_site/docs/master/dashboards/actions.html +++ b/_site/docs/master/dashboards/actions.html @@ -4975,12 +4975,6 @@
      Resources
      Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4994,6 +4988,7 @@
      Resources
      Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5010,24 +5005,21 @@
      Resources
      SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/dashboards/filters.html b/_site/docs/master/dashboards/filters.html index feac5f5e10..454e60e271 100644 --- a/_site/docs/master/dashboards/filters.html +++ b/_site/docs/master/dashboards/filters.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4700,32 +4700,15 @@

      Dashboard filters and parameters

      Dashboard Filters

      -

      Have you ever found yourself in a situation where it seems like you need to create nearly identical copies of the same dashboard, with just one different variable? Maybe you have an Earnings dashboard, but you want to see the data for each city your business is in, or maybe you have a KPI dashboard that you want to see broken out by month.

      +

      Instead of creating duplicate dashboards to show different cuts of the same data (like a different dashboard for each quarter), you can add filter or parameter widgets to let people change what data is displayed (filter the data), or how its displayed (parameterize the data).

      -

      Instead of creating duplicate dashboards, you can add filter or parameter widgets to let people change variables for cards on a dashboard.

      +

      Filter and parameter widgets

      -

      Adding a filter or parameter

      - -

      Add a Filter

      - - - -

      Metabase will display the filter only if the filter is connected to a card on the current dashboard tab.

      - -

      Filter and parameter types

      - -

      The type of filter or parameter widget you choose determines how the widget works, including which fields you’ll be able to filter your cards by.

      +

      There are two basic types of widgets you can add. The type of filter or parameter widget you choose determines how the widget works, including which fields you’ll can connect to the widget.

      Filter widgets

      -

      Filters determine what data to show. For example, a date filter might show only data from the last 30 days, or a category filter might show only specific product categories.

      +

      Filters determine what data to show. For example, a date filter might show only data from the last 30 days, or a category filter might show only specific product categories.

      -
    • OptionaldataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      +
    • OptionaldataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

    • OptionaldrillThroughQuestionHeight?: Height<string | number>

      Height of a question component when drilled from the dashboard to a question level.

    • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

      Props of a question component when drilled from the dashboard to a question level.

    • OptionalhiddenParameters?: string[]

      A list of parameters to hide. diff --git a/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html b/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html index 277bc8a0f7..29fa42c275 100644 --- a/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html +++ b/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html @@ -23,7 +23,7 @@ -

      Interface EditableDashboardProps

      interface EditableDashboardProps {
          className?: string;
          dashboardId: SdkDashboardId;
          dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">;
          drillThroughQuestionHeight?: Height<string | number>;
          drillThroughQuestionProps?: DrillThroughQuestionProps;
          hiddenParameters?: string[];
          initialParameters?: ParameterValues;
          onLoad?: (dashboard: null | MetabaseDashboard) => void;
          onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
          plugins?: MetabasePluginsConfig;
          renderDrillThroughQuestion?: () => ReactNode;
          style?: CSSProperties;
          withCardTitle?: boolean;
          withDownloads?: boolean;
          withTitle?: boolean;
      }
      Index

      Properties

      className? +

      Interface EditableDashboardProps

      interface EditableDashboardProps {
          className?: string;
          dashboardId: SdkDashboardId;
          dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
          drillThroughQuestionHeight?: Height<string | number>;
          drillThroughQuestionProps?: DrillThroughQuestionProps;
          hiddenParameters?: string[];
          initialParameters?: ParameterValues;
          onLoad?: (dashboard: null | MetabaseDashboard) => void;
          onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
          plugins?: MetabasePluginsConfig;
          renderDrillThroughQuestion?: () => ReactNode;
          style?: CSSProperties;
          withCardTitle?: boolean;
          withDownloads?: boolean;
          withTitle?: boolean;
      }
      Index
    • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
    • -
      dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      +
      dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      drillThroughQuestionHeight?: Height<string | number>

      Height of a question component when drilled from the dashboard to a question level.

      drillThroughQuestionProps?: DrillThroughQuestionProps

      Props of a question component when drilled from the dashboard to a question level.

      Type declaration

      Props for the drill-through question

      diff --git a/_site/docs/master/embedding/sdk/api/IconName.html b/_site/docs/master/embedding/sdk/api/IconName.html index 091b524b08..b60ab90ca4 100644 --- a/_site/docs/master/embedding/sdk/api/IconName.html +++ b/_site/docs/master/embedding/sdk/api/IconName.html @@ -23,6 +23,6 @@ -

      Type Alias IconName

      IconName:
          | "string"
          | "number"
          | "function"
          | "model"
          | "table"
          | "question"
          | "collection"
          | "dashboard"
          | "add"
          | "add_column"
          | "add_data"
          | "add_folder"
          | "add_row"
          | "add_to_dash"
          | "ai"
          | "alert"
          | "alert_filled"
          | "alert_confirm"
          | "archive"
          | "area"
          | "attachment"
          | "arrow_up"
          | "arrow_down"
          | "arrow_left"
          | "arrow_left_to_line"
          | "arrow_right"
          | "arrow_split"
          | "audit"
          | "badge"
          | "bar"
          | "bell"
          | "birthday"
          | "bookmark"
          | "bookmark_filled"
          | "bolt"
          | "bolt_filled"
          | "breakout"
          | "bubble"
          | "burger"
          | "calendar"
          | "check"
          | "check_filled"
          | "chevrondown"
          | "chevronleft"
          | "chevronright"
          | "chevronup"
          | "click"
          | "clipboard"
          | "clock"
          | "clone"
          | "close"
          | "cloud"
          | "cloud_filled"
          | "compare"
          | "combine"
          | "connections"
          | "contract"
          | "copy"
          | "curved"
          | "database"
          | "dash"
          | "curve"
          | "document"
          | "download"
          | "dyno"
          | "edit_document"
          | "ellipsis"
          | "embed"
          | "empty"
          | "enter_or_return"
          | "expand"
          | "expand_arrow"
          | "extract"
          | "eye"
          | "eye_crossed_out"
          | "eye_outline"
          | "field"
          | "fields"
          | "filter"
          | "filter_plus"
          | "bug"
          | "format_code"
          | "formula"
          | "funnel"
          | "funnel_outline"
          | "folder"
          | "folder_filled"
          | "gauge"
          | "gear"
          | "gear_settings_filled"
          | "gem"
          | "globe"
          | "grabber"
          | "grid"
          | "group"
          | "google"
          | "google_drive"
          | "google_sheet"
          | "history"
          | "home"
          | "horizontal_bar"
          | "hourglass"
          | "info"
          | "info_filled"
          | "info_outline"
          | "insight"
          | "int"
          | "io"
          | "join_full_outer"
          | "join_inner"
          | "join_left_outer"
          | "join_right_outer"
          | "index"
          | "key"
          | "label"
          | "ldap"
          | "learn"
          | "lightbulb"
          | "link"
          | "line"
          | "lines"
          | "lineandbar"
          | "line_style_dashed"
          | "line_style_dotted"
          | "line_style_solid"
          | "list"
          | "location"
          | "lock"
          | "lock_filled"
          | "mail"
          | "mail_filled"
          | "metabot"
          | "metabot_sad"
          | "metric"
          | "model_with_badge"
          | "moon"
          | "move"
          | "move_card"
          | "new_folder"
          | "notebook"
          | "palette"
          | "pause"
          | "pencil"
          | "pencil_lines"
          | "permissions_limited"
          | "person"
          | "pie"
          | "pin"
          | "pinmap"
          | "pivot_table"
          | "play"
          | "play_outlined"
          | "popover"
          | "popular"
          | "progress"
          | "pulse"
          | "recents"
          | "revert"
          | "sankey"
          | "share"
          | "split"
          | "sql"
          | "subscription"
          | "straight"
          | "stepped"
          | "sort"
          | "sort_arrows"
          | "sum"
          | "sync"
          | "redo"
          | "return"
          | "reference"
          | "refresh"
          | "refresh_downstream"
          | "rocket"
          | "ruler"
          | "schema"
          | "search"
          | "section"
          | "segment"
          | "shield"
          | "sidebar_closed"
          | "sidebar_open"
          | "slack"
          | "slack_colorized"
          | "smartscalar"
          | "snail"
          | "snippet"
          | "sparkles"
          | "star_filled"
          | "star"
          | "stop"
          | "store"
          | "sun"
          | "t-shirt"
          | "tab"
          | "table2"
          | "time_history"
          | "trash"
          | "trash_filled"
          | "triangle_left"
          | "triangle_right"
          | "unarchive"
          | "undo"
          | "unknown"
          | "unpin"
          | "unsubscribe"
          | "upload"
          | "variable"
          | "verified"
          | "official_collection"
          | "verified_filled"
          | "view_archive"
          | "warning"
          | "warning_round_filled"
          | "warning_triangle_filled"
          | "waterfall"
          | "webhook"
          | "10k"
          | "1m"
          | "zoom_in"
          | "zoom_out"
          | "scalar"
          | "cake"
          | "external"
          | "table_spaced"
          | "beaker"
          | "eye_filled"

      +

      Type Alias IconName

      IconName:
          | "string"
          | "number"
          | "function"
          | "model"
          | "table"
          | "question"
          | "collection"
          | "dashboard"
          | "revert"
          | "add"
          | "add_column"
          | "add_data"
          | "add_folder"
          | "add_row"
          | "add_to_dash"
          | "ai"
          | "alert"
          | "alert_filled"
          | "alert_confirm"
          | "archive"
          | "area"
          | "attachment"
          | "arrow_up"
          | "arrow_down"
          | "arrow_left"
          | "arrow_left_to_line"
          | "arrow_right"
          | "arrow_split"
          | "audit"
          | "badge"
          | "bar"
          | "bell"
          | "birthday"
          | "bookmark"
          | "bookmark_filled"
          | "bolt"
          | "bolt_filled"
          | "breakout"
          | "bubble"
          | "burger"
          | "calendar"
          | "check"
          | "check_filled"
          | "chevrondown"
          | "chevronleft"
          | "chevronright"
          | "chevronup"
          | "click"
          | "clipboard"
          | "clock"
          | "clone"
          | "close"
          | "cloud"
          | "cloud_filled"
          | "compare"
          | "combine"
          | "connections"
          | "contract"
          | "copy"
          | "curved"
          | "database"
          | "dash"
          | "curve"
          | "document"
          | "download"
          | "dyno"
          | "edit_document"
          | "ellipsis"
          | "embed"
          | "empty"
          | "enter_or_return"
          | "expand"
          | "expand_arrow"
          | "extract"
          | "eye"
          | "eye_crossed_out"
          | "eye_outline"
          | "field"
          | "fields"
          | "filter"
          | "filter_plus"
          | "bug"
          | "format_code"
          | "formula"
          | "funnel"
          | "funnel_outline"
          | "folder"
          | "folder_filled"
          | "gauge"
          | "gear"
          | "gear_settings_filled"
          | "gem"
          | "globe"
          | "grabber"
          | "grid"
          | "group"
          | "google"
          | "google_drive"
          | "google_sheet"
          | "history"
          | "home"
          | "horizontal_bar"
          | "hourglass"
          | "info"
          | "info_filled"
          | "info_outline"
          | "insight"
          | "int"
          | "io"
          | "join_full_outer"
          | "join_inner"
          | "join_left_outer"
          | "join_right_outer"
          | "index"
          | "key"
          | "label"
          | "ldap"
          | "learn"
          | "lightbulb"
          | "link"
          | "line"
          | "lines"
          | "lineandbar"
          | "line_style_dashed"
          | "line_style_dotted"
          | "line_style_solid"
          | "list"
          | "location"
          | "lock"
          | "lock_filled"
          | "mail"
          | "mail_filled"
          | "metabot"
          | "metabot_sad"
          | "metric"
          | "model_with_badge"
          | "moon"
          | "move"
          | "move_card"
          | "new_folder"
          | "notebook"
          | "palette"
          | "pause"
          | "pencil"
          | "pencil_lines"
          | "permissions_limited"
          | "person"
          | "pie"
          | "pin"
          | "pinmap"
          | "pivot_table"
          | "play"
          | "play_outlined"
          | "popover"
          | "popular"
          | "progress"
          | "pulse"
          | "recents"
          | "sankey"
          | "share"
          | "split"
          | "sql"
          | "subscription"
          | "straight"
          | "stepped"
          | "sort"
          | "sort_arrows"
          | "sum"
          | "sync"
          | "redo"
          | "return"
          | "reference"
          | "refresh"
          | "refresh_downstream"
          | "rocket"
          | "ruler"
          | "schema"
          | "search"
          | "section"
          | "segment"
          | "shield"
          | "sidebar_closed"
          | "sidebar_open"
          | "slack"
          | "slack_colorized"
          | "smartscalar"
          | "snail"
          | "snippet"
          | "sparkles"
          | "star_filled"
          | "star"
          | "stop"
          | "store"
          | "sun"
          | "t-shirt"
          | "tab"
          | "table2"
          | "time_history"
          | "trash"
          | "trash_filled"
          | "triangle_left"
          | "triangle_right"
          | "unarchive"
          | "undo"
          | "unknown"
          | "unpin"
          | "unsubscribe"
          | "upload"
          | "variable"
          | "verified"
          | "official_collection"
          | "verified_filled"
          | "view_archive"
          | "warning"
          | "warning_round_filled"
          | "warning_triangle_filled"
          | "waterfall"
          | "webhook"
          | "10k"
          | "1m"
          | "zoom_in"
          | "zoom_out"
          | "scalar"
          | "cake"
          | "external"
          | "table_spaced"
          | "beaker"
          | "eye_filled"

      \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html b/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html index f902519d01..a9fe0e6fca 100644 --- a/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html +++ b/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html @@ -23,8 +23,8 @@ -

      Function InteractiveDashboard

      dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      +
      dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      drillThroughQuestionHeight?: Height<string | number>

      Height of a question component when drilled from the dashboard to a question level.

      drillThroughQuestionProps?: DrillThroughQuestionProps

      Props of a question component when drilled from the dashboard to a question level.

      Type declaration

      Props for the drill-through question

      diff --git a/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html b/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html deleted file mode 100644 index 4ba3fbfa50..0000000000 --- a/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html +++ /dev/null @@ -1,147 +0,0 @@ -InteractiveQuestion | Embedded analytics SDK API - - - - - - - - - - - - - - - - - - - - - - - - -

      Function InteractiveQuestion

      • A component that renders an interactive question.

        -

        Parameters

        • props: InteractiveQuestionProps
          • Optionalchildren?: ReactNode

            The children of the MetabaseProvider component.s

            -
          • OptionalclassName?: string

            A custom class name to be added to the root element.

            -
          • OptionalentityTypes?: EmbeddingEntityType[]

            An array that specifies which entity types are available in the data picker

            -
          • Optionalheight?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

            -
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for the SQL parameters.

            -
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

            -
          • OptionalonBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

            -
          • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
          • OptionalonSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            -
          • Optionalplugins?: MetabasePluginsConfig
          • questionId: null | SdkQuestionId

            The ID of the question. -
            -This is either: -

            -
              -
            • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
            • -
            • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
            • -
            • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
            • -
            -
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

            -
          • OptionaltargetCollection?: SdkCollectionId

            The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

            -
          • Optionaltitle?: SdkQuestionTitleProps

            Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

            -
          • Optionalwidth?: Width<string | number>

            A number or string specifying a CSS size value that specifies the width of the component

            -
          • OptionalwithChartTypeSelector?: boolean

            Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

            -
          • OptionalwithDownloads?: boolean

            Enables the ability to download results in the interactive question.

            -
          • OptionalwithResetButton?: boolean

            Determines whether a reset button is displayed. Only relevant when using the default layout.

            -

        Returns null | Element

      Index

      InteractiveQuestion

      BackButton: (props: InteractiveQuestionBackButtonProps) => null | Element

      Type declaration

      Breakout: () => null | Element

      Type declaration

        • (): null | Element
        • Function

          A set of badges for managing data groupings (breakouts). -Uses question context for breakout functionality.

          -

          Returns null | Element

      BreakoutDropdown: (
          props: InteractiveQuestionBreakoutDropdownProps,
      ) => null | Element

      Type declaration

      ChartTypeDropdown: (props: MenuProps) => Element

      Type declaration

        • (props: MenuProps): Element
        • Function

          Dropdown for selecting the visualization type (bar chart, line chart, table, etc.). -Automatically updates to show recommended visualization types for the current data.

          -

          Parameters

          Returns Element

      ChartTypeSelector: (props: StackProps) => Element

      Type declaration

      DownloadWidget: (props: StackProps) => null | Element

      Type declaration

        • (props: StackProps): null | Element
        • Function

          Provides a UI widget for downloading data in different formats (CSV, XLSX, JSON, and PNG depending on the visualization).

          -

          Parameters

          Returns null | Element

      DownloadWidgetDropdown: (props: PopoverProps) => Element

      Type declaration

      Editor: (props: InteractiveQuestionEditorProps) => undefined | Element

      Type declaration

        • (props: InteractiveQuestionEditorProps): undefined | Element
        • Function

          Advanced query editor that provides full access to question configuration. -Includes filtering, aggregation, custom expressions, and joins.

          -

          Parameters

          • props: InteractiveQuestionEditorProps
            • OptionalhasVisualizeButton?: boolean
            • OptionalonApply?: () => void

              Callback function executed when changes are applied

              -

          Returns undefined | Element

      EditorButton: (
          props: InteractiveQuestionEditorButtonProps,
      ) => undefined | false | Element

      Type declaration

      Type declaration

      FilterDropdown: (
          props: InteractiveQuestionFilterDropdownProps,
      ) => null | Element

      Type declaration

      Notebook: (props: InteractiveQuestionEditorProps) => undefined | Element

      Type declaration

        • (props: InteractiveQuestionEditorProps): undefined | Element
        • Function

          Advanced query editor that provides full access to question configuration. -Includes filtering, aggregation, custom expressions, and joins.

          -

          Parameters

          • props: InteractiveQuestionEditorProps
            • OptionalhasVisualizeButton?: boolean
            • OptionalonApply?: () => void

              Callback function executed when changes are applied

              -

          Returns undefined | Element

      Use InteractiveQuestion.Editor instead

      -
      NotebookButton: (
          props: InteractiveQuestionEditorButtonProps,
      ) => undefined | false | Element

      Type declaration

      Use InteractiveQuestion.EditorButton instead

      -
      QuestionSettings: (props: StackProps) => null | Element

      Type declaration

        • (props: StackProps): null | Element
        • Function

          Settings panel for configuring visualization options like axes, colors, and formatting. -Uses question context for settings.

          -

          Parameters

          Returns null | Element

      QuestionSettingsDropdown: (
          props?: InteractiveQuestionQuestionSettingsDropdownProps,
      ) => Element

      Type declaration

      QuestionVisualization: (
          props: { className?: string; style?: CSSProperties } & {
              height?: Height<string | number>;
              width?: Width<string | number>;
          } & {},
      ) => Element

      Type declaration

        • (
              props: { className?: string; style?: CSSProperties } & {
                  height?: Height<string | number>;
                  width?: Width<string | number>;
              } & {},
          ): Element
        • Function

          The main visualization component that renders the question results as a chart, table, or other visualization type.

          -

          Parameters

          • props: { className?: string; style?: CSSProperties } & {
                height?: Height<string | number>;
                width?: Width<string | number>;
            } & {}
            • OptionalclassName?: string

              A custom class name to be added to the root element.

              -
            • Optionalstyle?: CSSProperties

              A custom style object to be added to the root element.

              -
            • Optionalheight?: Height<string | number>

              A number or string specifying a CSS size value that specifies the height of the component

              -
            • Optionalwidth?: Width<string | number>

              A number or string specifying a CSS size value that specifies the width of the component

              -

            Returns Element

        ResetButton: (props?: ButtonProps) => null | Element

        Type declaration

          • (props?: ButtonProps): null | Element
          • Function

            Button to reset question modifications. Only appears when there are unsaved changes to the question.

            -

            Parameters

            Returns null | Element

        Type declaration

        SaveQuestionForm: (
            props: InteractiveQuestionSaveQuestionFormProps,
        ) => null | Element

        Type declaration

        Summarize: () => Element

        Type declaration

          • (): Element
          • Function

            Interface for adding and managing data summaries (like counts, sums, averages). Displays as a set of badges. -Uses question context for summarization functionality.

            -

            Returns Element

        SummarizeDropdown: (props: InteractiveQuestionSummarizeDropdownProps) => Element

        Type declaration

        Title: (
            props: { className?: string; style?: CSSProperties },
        ) => undefined | Element

        Type declaration

          • (props: { className?: string; style?: CSSProperties }): undefined | Element
          • Function

            Displays a title based on the question's state. Shows:

            -
              -
            • The question's display name if it's saved
            • -
            • An auto-generated description for ad-hoc questions (non-native queries)
            • -
            • "New question" as fallback or for new/native queries
            • -
            -

            Parameters

            • props: { className?: string; style?: CSSProperties }
              • OptionalclassName?: string

                A custom class name to be added to the root element.

                -
              • Optionalstyle?: CSSProperties

                A custom style object to be added to the root element.

                -

            Returns undefined | Element

        other

        VisualizationButton: () => null | Element

        - - \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html b/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html index 57cf9c4172..b800d2aec1 100644 --- a/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html @@ -23,13 +23,14 @@ -

        Interface InteractiveQuestionProps

        interface InteractiveQuestionProps {
            children?: ReactNode;
            className?: string;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        children? -className? +

        Interface InteractiveQuestionProps

        interface InteractiveQuestionProps {
            className?: string;
            componentPlugins?: MetabasePluginsConfig;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onNavigateBack?: () => void;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        children?: ReactNode

        The children of the MetabaseProvider component.s

        -
        className?: string

        A custom class name to be added to the root element.

        +

        Properties

        className?: string

        A custom class name to be added to the root element.

        +
        componentPlugins?: MetabasePluginsConfig

        Additional mapper function to override or add drill-down menu

        entityTypes?: EmbeddingEntityType[]

        An array that specifies which entity types are available in the data picker

        height?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

        initialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        isSaveEnabled?: boolean

        Whether to show the save button.

        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

        +
        onNavigateBack?: () => void

        A callback function that triggers when a user clicks the back button.

        onRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        -
        questionId: null | SdkQuestionId

        The ID of the question. -
        -This is either: -

        -
          -
        • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
        • -
        • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
        • -
        • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
        • -
        -

        A custom style object to be added to the root element.

        +
        questionId: null | SdkQuestionId

        A custom style object to be added to the root element.

        targetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        width?: Width<string | number>

        A number or string specifying a CSS size value that specifies the width of the component

        withChartTypeSelector?: boolean

        Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

        withDownloads?: boolean

        Enables the ability to download results in the interactive question.

        withResetButton?: boolean

        Determines whether a reset button is displayed. Only relevant when using the default layout.

        -

        +

        \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/SdkQuestionProps.html b/_site/docs/master/embedding/sdk/api/SdkQuestionProps.html new file mode 100644 index 0000000000..1f5a43e9ab --- /dev/null +++ b/_site/docs/master/embedding/sdk/api/SdkQuestionProps.html @@ -0,0 +1,64 @@ +SdkQuestionProps | Embedded analytics SDK API + + + + + + + + + + + + + + + + + + + + + + + + +

        Interface SdkQuestionProps

        interface SdkQuestionProps {
            className?: string;
            componentPlugins?: MetabasePluginsConfig;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onNavigateBack?: () => void;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        className?: string

        A custom class name to be added to the root element.

        +
        componentPlugins?: MetabasePluginsConfig

        Additional mapper function to override or add drill-down menu

        +
        entityTypes?: EmbeddingEntityType[]

        An array that specifies which entity types are available in the data picker

        +
        height?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

        +
        initialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        +
        isSaveEnabled?: boolean

        Whether to show the save button.

        +
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

        +
        onNavigateBack?: () => void

        A callback function that triggers when a user clicks the back button.

        +
        onRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        +
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        +
        questionId: null | SdkQuestionId

        A custom style object to be added to the root element.

        +
        targetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

        +

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        +
        width?: Width<string | number>

        A number or string specifying a CSS size value that specifies the width of the component

        +
        withChartTypeSelector?: boolean

        Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

        +
        withDownloads?: boolean

        Enables the ability to download results in the interactive question.

        +
        withResetButton?: boolean

        Determines whether a reset button is displayed. Only relevant when using the default layout.

        +

        + + \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/StaticDashboard.html b/_site/docs/master/embedding/sdk/api/StaticDashboard.html index 76929144aa..3a427a3fc1 100644 --- a/_site/docs/master/embedding/sdk/api/StaticDashboard.html +++ b/_site/docs/master/embedding/sdk/api/StaticDashboard.html @@ -23,8 +23,8 @@ -

        Function StaticDashboard

        dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

        Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

        +
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">

        Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

        drillThroughQuestionHeight?: Height<string | number>

        Height of a question component when drilled from the dashboard to a question level.

        drillThroughQuestionProps?: DrillThroughQuestionProps

        Props of a question component when drilled from the dashboard to a question level.

        Type declaration

        Props for the drill-through question

        diff --git a/_site/docs/master/embedding/sdk/api/StaticQuestion.html b/_site/docs/master/embedding/sdk/api/StaticQuestion.html deleted file mode 100644 index 9fe7eebc5e..0000000000 --- a/_site/docs/master/embedding/sdk/api/StaticQuestion.html +++ /dev/null @@ -1,46 +0,0 @@ -StaticQuestion | Embedded analytics SDK API - - - - - - - - - - - - - - - - - - - - - - - - -

        Function StaticQuestion

        • A component that renders a static question.

          -

          Parameters

          • props: StaticQuestionProps
            • OptionalclassName?: string

              A custom class name to be added to the root element.

              -
            • Optionalheight?: Height<string | number>

              A number or string specifying a CSS size value that specifies the height of the component

              -
            • OptionalinitialSqlParameters?: SqlParameterValues

              Initial values for the SQL parameters.

              -
            • questionId: null | SdkQuestionId

              The ID of the question. -
              -This is either: -

              -
                -
              • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
              • -
              • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
              • -
              • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
              • -
              -
            • Optionalstyle?: CSSProperties

              A custom style object to be added to the root element.

              -
            • Optionalwidth?: Width<string | number>

              A number or string specifying a CSS size value that specifies the width of the component

              -
            • OptionalwithChartTypeSelector?: boolean
            • OptionalwithDownloads?: boolean

              Enables the ability to download results in the interactive question.

              -

          Returns ReactNode

        - - \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html b/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html index 5355f8d73b..45423dcfb7 100644 --- a/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html @@ -23,31 +23,23 @@ -

        Interface StaticQuestionProps

        interface StaticQuestionProps {
            className?: string;
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
        }
        Index

        Properties

        className? +

        Interface StaticQuestionProps

        interface StaticQuestionProps {
            className?: string;
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
        }
        Index

        Properties

        className?: string

        A custom class name to be added to the root element.

        height?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

        initialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        -
        questionId: null | SdkQuestionId

        The ID of the question. -
        -This is either: -

        -
          -
        • The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1 -
        • -
        • The entity_id key of the question object. You can find a question's Entity ID in the info panel when viewing a question -
        • -
        • new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question
        • -
        -

        A custom style object to be added to the root element.

        +
        questionId: null | SdkQuestionId

        A custom style object to be added to the root element.

        +

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        width?: Width<string | number>

        A number or string specifying a CSS size value that specifies the width of the component

        -
        withChartTypeSelector?: boolean
        withDownloads?: boolean

        Enables the ability to download results in the interactive question.

        -

        +
        withChartTypeSelector?: boolean

        Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

        +
        withDownloads?: boolean

        Enables the ability to download results in the interactive question.

        +

        \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/assets/navigation.js b/_site/docs/master/embedding/sdk/api/assets/navigation.js index ba4359a8d1..aa69cd7e02 100644 --- a/_site/docs/master/embedding/sdk/api/assets/navigation.js +++ b/_site/docs/master/embedding/sdk/api/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJylWU1z2zYQ/S88ezpppkmmvtmyPI3jtK7lJIeMDxC5EVGBAAMsrTod//cMzZIigcUH6ZNm8N6+t1h8U1//yxD+xew0WykhIEeu5LlWBwM6O8nykotCg8xOvwZ5NcOSgn4psRLZSbbnsshO3/72dOKXudGqNgGtZ3wq+PrN26f7saYGhnDBTLlVTBcfVcGErxc0tTcn0FBfCLrdHR/F7ZFX9zMTDfg1Ozik1xiwYs5qftQjYafbbsH/bsC0AxUs9Yg0Sb9vt31OslwwY7LTrIBaQ84QisxrTVZ7AoZnztBjTx/WBUe2FTDm/e/lQIGJ4nCtvGk8NKTvJYJmOfIHKjcKDaRH0a0MvZRQkhtkyHMiPwsIpGYxrawoNDzgo35Epu+F5kLclVo1u9Iz3byUxJFz1wYBpo1bzz5n+f68QXRyjXOtpF/9/u7XN68jbhrYXjV4oVVdqEOKJxWxwHlVMo13jzWkW9MhL/HeQHtUKfsISw5Z4H2hDlIoVnzhxQ5m1D0Q9+Is5rovdW13SaVTZ7fDnrkou/hUnyUOl1wg6PQxJPgLqtippLotdYnrL6lY/7sBRC53Jr12wcgXZjHffWlV+9/P3DRM8B8srdT+sJk9vwUDmLoAbfJMrw17gFQri7ugsq3CMPOVrtI8nYi5fWyqimn+Y8YpRocs6PEdRwFxvyMtfLH6CMi2zLTUB154X5EFfOMSevJZg+VKyW98d8zBxwjcg0JyMSG3Vm7EF47lWc0/wGNI98ha5nB1wJj81QGXaW9YJWLiLSdVfTTKlmaPJAxXT7UmIQmHJ1/3Dohc6B3S5BGRcN2eEsmnyIynp8LSu0rOmYH4oRpihTYicledsX0+X2ZXSqjxJ6ChLRptf+C55qaNbCoZ+gw0YkUdGoOqGl6Fq/a7C8jmPUI1MvCTYvqToE7H1Q+QZum3QR7VFpqt1aWyFlCBxIDwhJfiQpfZRmJK62oLRcHlbi2R42P7ZBp9JnHBqN7A7O6zH+Bx/N2FQKNHaa7kn6wapdW3xCKv1Y7Ldp9oRimMGlM335Xg+f4sn+5iBLhA70Y0Oy6N7xD1MZOdhlVNaA/YfLXpnKPxGapKE8dR1x7aV4/MqlYSJN6VMJ4nNJ6aF/EZzYFma0XGm+aluyC7UVziX9t/ICcuNxYhVXfYBjZgTHtFVXsgJhRJS/W4BMzLW/jenqnPgZeEA0FK1lcSL1nFBXGlPGLJ17HwMC4aPfeiZCMpa8GzBKiZT8Z/MtQl85PzH5PbjxumWQUI2v77xAJiOptiP9pIxh+xp0CCzrCcLJlR+xyVa8WK9cPkGCfhBM3uILTS6htT4rVWetjXpioTaLaWfc0m8RTVthJ/MFkI0M5CofEE1X4pWJU7Ns/QoB7kJJyg2S4QK6euKRr7XXgXjovF1FrP9l8GkMXVAW/B1Eqa0XZA47Tq/dP9Ty1Guno=" \ No newline at end of file +window.navigationData = "eJylWV1z0zgU/S9+7uywzAKzfWvTZKCU3W5T4IHhQbEusTayZKTrhsLw3xknTWLLV1/mqR2dc8+Rrq71lU8/CoRvWJwXMy0llCi0ujR6a8EUZ0VZCckNqOL8U5DXMKwo6I8Ka1mcFRuheHH+8q+fZ36ZW6MbG9Da4UPB5y9e/vzc1zTAEK6YrVaaGf5OcyZ9o6CpB3MCDYylteBEXDTipEbCodQQ7m52fJRxgry6H5hswa+5h1MS/l8LtpuoYKp7pIHfod3Nx1lRSmZtcV5waAyUDIEXXmsyPQMwPJDjqD1jmHOBbCWhz3vyGkGBmX2jEAwrUTxQShQaEFsiQ1ESOg4QkBj13ckjjYdqjBqDI+qlhHSdMTmSFBqe8F4nIuV7ZYSU95XR7brylJuXkpipQ0yXbm0uW8SRRQp7kluqzxSHuPYU1cPfJSAKtbZXRjdcbxPcgpETe/FB2JZJ8Z2lDdgflul/BxYwtVRccqbXkp3+X2hTxw3JiEzXe4ES4lYnWnD94BtPVbpIZi8vWblJnQaH6zg9+/vVny+eR9wMsI1uMb3myYgJzrOKGbx/bCDdmg75He8ldGfClEWLDpngfaW3SmrGPwq+hoy8B+J+uxe57lNdF0IimPQxE/zJrqluU13cvSB/95jq3K2NqSuGw53i1tY1M+J7xndLh9De/TPVO0C2YrZbjB8E914gOXwRCg7kixarmVZfxPrUJx8jcJIlvJ/EXCRDxEkVCYe2i9AYY6MbT+444qPA6qIRb+ExpHtiTXO43mJM/nqL07SXrJYx8Y4TL779FSBylh+SyEtExqVRY+Ut8ktmwX/moNCUQpppqQ1Rkfv2FIXxNdxFUlTuK6hhLLFrDsWTy17G+rbb1XeD7d31j23RaPdJ6UbYLrKtVejhqceKOrQWdX28h866pxlQ7RuEumfgJ8X0B0F7nbF+gJSl3wV5VDsoW2vflbmEGhQGhAe8FBc6zS4SU5rXK+BcqPVcocDH7uzYewgZg1G9I3N/UHkLj/2XFQKN7u6lVv+w/od3aIlF3ui1UN361va60GtMXbxnUpSbi5JeQHrgBL1b2a6Fsr5t0sdMdjp+1eTq+YTlqw1rjsbTVetGK1DoWV6HeKoq8UA4grK1IrNF89JdkN1qofDf1f9QEocPh5Cqe/yIl2Bt93KgN0CUA0lL9VgAltUdfO02013ggnAgSMn6WuGC1UISR74TlqoWmcZJs/feUqfv96Nfg8YKt8ywGhCM+8uEA8R0lnzT+wD7D+NDIEHnWMiOTK89R+VGMz5/GGx/JJygud9AnG4dGlPijdHmuKIMVQZQttb4fY3AU1S7TLxmikswoxKl8QTVwzHXydypOUODeqEk4QTN7gNx+rRvisZ+ld4PZ4zF1DrP7pkSFL/e4h3YRivb24to3Hc9+/wLboObAg==" \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/assets/search.js b/_site/docs/master/embedding/sdk/api/assets/search.js index a91212dd5e..2a04bc2d93 100644 --- a/_site/docs/master/embedding/sdk/api/assets/search.js +++ b/_site/docs/master/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/index.html b/_site/docs/master/embedding/sdk/api/index.html index 33ef352033..486ef77299 100644 --- a/_site/docs/master/embedding/sdk/api/index.html +++ b/_site/docs/master/embedding/sdk/api/index.html @@ -23,6 +23,6 @@ -

        Embedded analytics SDK API

        CollectionBrowser

        CollectionBrowser
        CollectionBrowserProps

        CreateDashboardModal

        CreateDashboardModal
        CreateDashboardModalProps
        CreateDashboardValues
        useCreateDashboardApi

        CreateQuestion

        CreateQuestion
        CreateQuestionProps

        Dashboard

        EditableDashboard
        EditableDashboardProps
        InteractiveDashboard
        InteractiveDashboardProps
        StaticDashboard
        StaticDashboardProps

        InteractiveQuestion

        DrillThroughQuestionProps
        InteractiveQuestion
        InteractiveQuestionBackButtonProps
        InteractiveQuestionBreakoutDropdownProps
        InteractiveQuestionChartTypeDropdownProps
        InteractiveQuestionChartTypeSelectorProps
        InteractiveQuestionDownloadWidgetDropdownProps
        InteractiveQuestionDownloadWidgetProps
        InteractiveQuestionEditorButtonProps
        InteractiveQuestionEditorProps
        InteractiveQuestionFilterDropdownProps
        InteractiveQuestionFilterProps
        InteractiveQuestionProps
        InteractiveQuestionQuestionSettingsDropdownProps
        InteractiveQuestionQuestionSettingsProps
        InteractiveQuestionQuestionVisualizationProps
        InteractiveQuestionResetButtonProps
        InteractiveQuestionSaveButtonProps
        InteractiveQuestionSaveQuestionFormProps
        InteractiveQuestionSummarizeDropdownProps
        InteractiveQuestionTitleProps

        MetabaseProvider

        defineMetabaseAuthConfig
        MetabaseAuthConfig
        MetabaseAuthConfigWithApiKey
        MetabaseAuthConfigWithJwt
        MetabaseAuthConfigWithSaml
        MetabaseProvider
        MetabaseProviderProps

        StaticQuestion

        StaticQuestion
        StaticQuestionProps

        other

        BaseInteractiveQuestionProps
        ButtonProps
        ChartColor
        CollectionBrowserListColumns
        CustomDashboardCardMenuItem
        DashboardCardCustomMenuItem
        DashboardCardMenu
        DashboardCardMenuCustomElement
        DashCardMenuItem
        EmbeddingEntityType
        EntityTypeFilterKeys
        IconName
        LoginStatus
        MetabaseClickAction
        MetabaseClickActionPluginsConfig
        MetabaseCollection
        MetabaseCollectionItem
        MetabaseColors
        MetabaseComponentTheme
        MetabaseDashboard
        MetabaseDashboardPluginsConfig
        MetabaseDataPointObject
        MetabaseEmbeddingSessionToken
        MetabaseFetchRequestTokenFn
        MetabaseFontFamily
        MetabasePluginsConfig
        MetabaseQuestion
        MetabaseTheme
        MetabaseUser
        ParameterValues
        SdkCollectionId
        SdkDashboardId
        SdkDashboardLoadEvent
        SdkEntityId
        SdkErrorComponent
        SdkErrorComponentProps
        SdkEventHandlersConfig
        SdkQuestionId
        SdkQuestionTitleProps
        SdkUserId
        SqlParameterValues
        UserBackendJwtResponse

        +

        Embedded analytics SDK API

        CollectionBrowser

        CollectionBrowser
        CollectionBrowserProps

        CreateDashboardModal

        CreateDashboardModal
        useCreateDashboardApi
        CreateDashboardModalProps
        CreateDashboardValues

        CreateQuestion

        CreateQuestion
        CreateQuestionProps

        Dashboard

        EditableDashboard
        InteractiveDashboard
        StaticDashboard
        EditableDashboardProps
        InteractiveDashboardProps
        StaticDashboardProps

        InteractiveQuestion

        DrillThroughQuestionProps
        InteractiveQuestionEditorButtonProps
        InteractiveQuestionEditorProps
        InteractiveQuestionProps
        InteractiveQuestionQuestionSettingsDropdownProps
        InteractiveQuestionQuestionVisualizationProps
        InteractiveQuestionResetButtonProps
        InteractiveQuestionSaveQuestionFormProps
        InteractiveQuestionTitleProps
        SdkQuestionProps
        InteractiveQuestionBackButtonProps
        InteractiveQuestionBreakoutDropdownProps
        InteractiveQuestionChartTypeDropdownProps
        InteractiveQuestionChartTypeSelectorProps
        InteractiveQuestionDownloadWidgetDropdownProps
        InteractiveQuestionDownloadWidgetProps
        InteractiveQuestionFilterDropdownProps
        InteractiveQuestionFilterProps
        InteractiveQuestionQuestionSettingsProps
        InteractiveQuestionSaveButtonProps
        InteractiveQuestionSummarizeDropdownProps

        MetabaseProvider

        defineMetabaseAuthConfig
        MetabaseProvider
        MetabaseProviderProps
        MetabaseAuthConfig
        MetabaseAuthConfigWithApiKey
        MetabaseAuthConfigWithJwt
        MetabaseAuthConfigWithSaml

        StaticQuestion

        StaticQuestionProps

        other

        BaseSdkQuestionProps
        MetabaseColors
        MetabaseQuestion
        MetabaseTheme
        ButtonProps
        ChartColor
        CollectionBrowserListColumns
        CustomDashboardCardMenuItem
        DashboardCardCustomMenuItem
        DashboardCardMenu
        DashboardCardMenuCustomElement
        DashCardMenuItem
        EmbeddingEntityType
        EntityTypeFilterKeys
        IconName
        LoginStatus
        MetabaseClickAction
        MetabaseClickActionPluginsConfig
        MetabaseCollection
        MetabaseCollectionItem
        MetabaseComponentTheme
        MetabaseDashboard
        MetabaseDashboardPluginsConfig
        MetabaseDataPointObject
        MetabaseEmbeddingSessionToken
        MetabaseFetchRequestTokenFn
        MetabaseFontFamily
        MetabasePluginsConfig
        MetabaseUser
        ParameterValues
        SdkCollectionId
        SdkDashboardId
        SdkDashboardLoadEvent
        SdkEntityId
        SdkErrorComponent
        SdkErrorComponentProps
        SdkEventHandlersConfig
        SdkQuestionId
        SdkQuestionTitleProps
        SdkUserId
        SqlParameterValues
        UserBackendJwtResponse

        \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/appearance.html b/_site/docs/master/embedding/sdk/appearance.html index 6370ebbce4..f89184e31b 100644 --- a/_site/docs/master/embedding/sdk/appearance.html +++ b/_site/docs/master/embedding/sdk/appearance.html @@ -5156,12 +5156,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5175,6 +5169,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
        @@ -5191,24 +5186,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/authentication.html b/_site/docs/master/embedding/sdk/authentication.html index 0e487fa1af..8e85225f04 100644 --- a/_site/docs/master/embedding/sdk/authentication.html +++ b/_site/docs/master/embedding/sdk/authentication.html @@ -5441,12 +5441,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5460,6 +5454,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
        @@ -5476,24 +5471,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/collections.html b/_site/docs/master/embedding/sdk/collections.html index e675f53d21..8add8a0a21 100644 --- a/_site/docs/master/embedding/sdk/collections.html +++ b/_site/docs/master/embedding/sdk/collections.html @@ -5031,12 +5031,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5050,6 +5044,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
        @@ -5066,24 +5061,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/config.html b/_site/docs/master/embedding/sdk/config.html index adcc38c32c..8d803a481b 100644 --- a/_site/docs/master/embedding/sdk/config.html +++ b/_site/docs/master/embedding/sdk/config.html @@ -5139,12 +5139,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5158,6 +5152,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset
        @@ -5174,24 +5169,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/dashboards.html b/_site/docs/master/embedding/sdk/dashboards.html index 1bedbeb820..a395166b77 100644 --- a/_site/docs/master/embedding/sdk/dashboards.html +++ b/_site/docs/master/embedding/sdk/dashboards.html @@ -4757,7 +4757,7 @@

        Props

        dataPickerProps? - Pick<InteractiveQuestionProps, "entityTypes"> + Pick<SdkQuestionProps, "entityTypes"> Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. @@ -4856,7 +4856,7 @@

        Props

        dataPickerProps? - Pick<InteractiveQuestionProps, "entityTypes"> + Pick<SdkQuestionProps, "entityTypes"> Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. @@ -4955,7 +4955,7 @@

        Props

        dataPickerProps? - Pick<InteractiveQuestionProps, "entityTypes"> + Pick<SdkQuestionProps, "entityTypes"> Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. @@ -5506,12 +5506,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5525,6 +5519,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5541,24 +5536,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/introduction.html b/_site/docs/master/embedding/sdk/introduction.html index 7e25569c2a..9bf8298362 100644 --- a/_site/docs/master/embedding/sdk/introduction.html +++ b/_site/docs/master/embedding/sdk/introduction.html @@ -5069,12 +5069,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5088,6 +5082,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5104,24 +5099,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/next-js.html b/_site/docs/master/embedding/sdk/next-js.html index c3f79c1f12..e4912542d2 100644 --- a/_site/docs/master/embedding/sdk/next-js.html +++ b/_site/docs/master/embedding/sdk/next-js.html @@ -5135,12 +5135,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5154,6 +5148,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5170,24 +5165,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/plugins.html b/_site/docs/master/embedding/sdk/plugins.html index e57872266f..b5d6710eda 100644 --- a/_site/docs/master/embedding/sdk/plugins.html +++ b/_site/docs/master/embedding/sdk/plugins.html @@ -4967,12 +4967,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4986,6 +4980,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5002,24 +4997,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/questions.html b/_site/docs/master/embedding/sdk/questions.html index 1a690f30a2..42a8001019 100644 --- a/_site/docs/master/embedding/sdk/questions.html +++ b/_site/docs/master/embedding/sdk/questions.html @@ -4795,13 +4795,18 @@

        Props

        questionId null | SdkQuestionId - The ID of the question.
        This is either:
        - The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1
        - The entity_id key of the question object. You can find a question’s Entity ID in the info panel when viewing a question
        - new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question + - style? CSSProperties A custom style object to be added to the root element. + + title? + SdkQuestionTitleProps + Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout. + width? Width<string | number> @@ -4810,7 +4815,7 @@

        Props

        withChartTypeSelector? boolean - - + Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. withDownloads? @@ -4867,16 +4872,16 @@

        Props

        - - children? - ReactNode - The children of the MetabaseProvider component.s - className? string A custom class name to be added to the root element. + + componentPlugins? + MetabasePluginsConfig + Additional mapper function to override or add drill-down menu + entityTypes? EmbeddingEntityType[] @@ -4902,6 +4907,11 @@

        Props

        (question: undefined | MetabaseQuestion, context: { isNewQuestion: boolean; }) => Promise<void> A callback function that triggers before saving. Only relevant when isSaveEnabled = true + + onNavigateBack? + () => void + A callback function that triggers when a user clicks the back button. + onRun? (question: undefined | MetabaseQuestion) => void @@ -4920,7 +4930,7 @@

        Props

        questionId null | SdkQuestionId - The ID of the question.
        This is either:
        - The numerical ID when accessing a question link, e.g., http://localhost:3000/question/1-my-question where the ID is 1
        - The entity_id key of the question object. You can find a question’s Entity ID in the info panel when viewing a question
        - new to show the notebook editor for creating new questions. isSaveEnabled must be true to allow saving the question + - style? @@ -5393,12 +5403,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5412,6 +5416,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5428,24 +5433,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/quickstart-cli.html b/_site/docs/master/embedding/sdk/quickstart-cli.html index d027ff352c..76d5498641 100644 --- a/_site/docs/master/embedding/sdk/quickstart-cli.html +++ b/_site/docs/master/embedding/sdk/quickstart-cli.html @@ -5053,12 +5053,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5072,6 +5066,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5088,24 +5083,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html b/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html index 0b0f2d6fba..1778169e85 100644 --- a/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html +++ b/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html @@ -5184,12 +5184,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5203,6 +5197,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5219,24 +5214,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/quickstart.html b/_site/docs/master/embedding/sdk/quickstart.html index 605a04fa91..8a4eedbe3d 100644 --- a/_site/docs/master/embedding/sdk/quickstart.html +++ b/_site/docs/master/embedding/sdk/quickstart.html @@ -5020,12 +5020,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5039,6 +5033,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5055,24 +5050,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/upgrade.html b/_site/docs/master/embedding/sdk/upgrade.html index af4dbdaf2b..cb3820dc91 100644 --- a/_site/docs/master/embedding/sdk/upgrade.html +++ b/_site/docs/master/embedding/sdk/upgrade.html @@ -4982,12 +4982,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5001,6 +4995,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5017,24 +5012,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/sdk/version.html b/_site/docs/master/embedding/sdk/version.html index 61c7f558a4..983ac426e0 100644 --- a/_site/docs/master/embedding/sdk/version.html +++ b/_site/docs/master/embedding/sdk/version.html @@ -4964,12 +4964,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -4983,6 +4977,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -4999,24 +4994,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/securing-embeds.html b/_site/docs/master/embedding/securing-embeds.html index 4149a776f0..d222bf8142 100644 --- a/_site/docs/master/embedding/securing-embeds.html +++ b/_site/docs/master/embedding/securing-embeds.html @@ -5411,12 +5411,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5430,6 +5424,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5446,24 +5441,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/start.html b/_site/docs/master/embedding/start.html index 7418aab835..e3e35eacb0 100644 --- a/_site/docs/master/embedding/start.html +++ b/_site/docs/master/embedding/start.html @@ -4738,6 +4738,10 @@

        Securing embedde

        How to make sure the right people can see the right data in your embedded Metabase.

        +

        Translating questions and dashboards

        + +

        Upload a translation dictionary to translate questions and dashboards (only in static embeds).

        + @@ -4988,24 +4987,21 @@

        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/static-embedding-parameters.html b/_site/docs/master/embedding/static-embedding-parameters.html index 8d2c7c64da..d5121b27e0 100644 --- a/_site/docs/master/embedding/static-embedding-parameters.html +++ b/_site/docs/master/embedding/static-embedding-parameters.html @@ -5251,12 +5251,6 @@
        Resources
        Data and Business Intelligence Glossary Partners - - The Startup's Guide to Financial Modeling - - - The 2023 Metabase Community Data Stack Report - Choosing Metabase @@ -5270,6 +5264,7 @@
        Resources
        Embedded Analytics Metabase vs. Tableau Metabase vs. Looker + Metabase vs. Looker Studio Metabase vs. PowerBI Metabase vs. Superset @@ -5286,24 +5281,21 @@
        Resources
        SQL Best Practices - - Choosing a Data Warehouse - - - How to Create Pivot Tables + + Which chart to use? A cheat sheet + + + What is embedded analytics? + + + Learn SQL Types of SQL Joins - - SQL Cheat Sheet - Data Bias Examples - - Modern Data Stack - Dashboard for Marketing Teams diff --git a/_site/docs/master/embedding/static-embedding.html b/_site/docs/master/embedding/static-embedding.html index 44f81fc85a..2f5979d062 100644 --- a/_site/docs/master/embedding/static-embedding.html +++ b/_site/docs/master/embedding/static-embedding.html @@ -4914,6 +4914,10 @@

        Custom destinations

        You can propagate filter values into the external URL, unless the filter is locked.

        +

        Translating static embeds

        + +

        See Translating embedded questions and dashboards.

        +

        Further reading