diff --git a/_docs/master/README.md b/_docs/master/README.md index c83b4ec1bd..68bb4559e2 100644 --- a/_docs/master/README.md +++ b/_docs/master/README.md @@ -135,7 +135,7 @@ Metabase's reference documentation. - [Model persistence](./data-modeling/model-persistence) - [Metrics](./data-modeling/metrics) - [Table metadata admin settings](./data-modeling/metadata-editing) -- [Field types](./data-modeling/field-types) +- [Field types](./data-modeling/semantic-types) - [Formatting defaults](./data-modeling/formatting) - [Working with JSON](./data-modeling/json-unfolding) - [Segments](./data-modeling/segments) diff --git a/_docs/master/api.html b/_docs/master/api.html index d94a040518..c96928f667 100644 --- a/_docs/master/api.html +++ b/_docs/master/api.html @@ -113,105 +113,6 @@ }, "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", @@ -297,126 +198,10 @@ "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", @@ -579,28 +364,6 @@ "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", @@ -625,38 +388,6 @@ "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" @@ -736,86 +467,6 @@ "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", @@ -885,97 +536,6 @@ "properties" : { } } ] }, - "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" : { @@ -1018,74 +578,6 @@ }, "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", @@ -1112,60 +604,6 @@ "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", @@ -1188,43 +626,6 @@ "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", @@ -1261,25 +662,6 @@ "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", @@ -1323,9 +705,6 @@ "properties" : { } } ] }, - "metabase-enterprise.metabot-v3.tools.api.proportion" : { - "type" : "number" - }, "metabase-enterprise.metabot-v3.tools.api.query-metric-arguments" : { "allOf" : [ { "type" : "object", @@ -1409,59 +788,6 @@ "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", @@ -1600,53 +926,192 @@ }, "required" : [ "conversation_id" ] }, - "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" : { + "metabase.analyze.fingerprint.schema.Fingerprint" : { "type" : "object", "properties" : { + "experimental" : { + "type" : "object", + "properties" : { } + }, + "global" : { + "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.GlobalFingerprint" + }, "type" : { - "type" : "string", - "enum" : [ "nocache", "ttl", "duration", "schedule" ] + "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" } - }, - "required" : [ "type" ] - }, - "metabase.cache.api..cache-strategy.ee" : { - "description" : "Schema for a caching strategy in EE when we have an premium token with `:cache-granular-controls`.", - "allOf" : [ { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.base" - }, { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.nocache" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ttl" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.duration" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.schedule" - } ] - } ] + } }, - "metabase.cache.api..cache-strategy.ee.duration" : { + "metabase.analyze.fingerprint.schema.GlobalFingerprint" : { "type" : "object", "properties" : { - "duration" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "refresh_automatically" : { - "type" : "boolean" - }, - "type" : { - "const" : "duration" + "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" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "nocache", "ttl", "duration", "schedule" ] + } + }, + "required" : [ "type" ] + }, + "metabase.cache.api..cache-strategy.ee" : { + "description" : "Schema for a caching strategy in EE when we have an premium token with `:cache-granular-controls`.", + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.base" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.nocache" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ttl" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.duration" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.schedule" + } ] + } ] + }, + "metabase.cache.api..cache-strategy.ee.duration" : { + "type" : "object", + "properties" : { + "duration" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "refresh_automatically" : { + "type" : "boolean" + }, + "type" : { + "const" : "duration" }, "unit" : { "type" : "string", @@ -1762,2470 +1227,82 @@ "properties" : { "path" : { "type" : "string" - }, - "recipient-type" : { - "enum" : [ "cc", "bcc", "cc", "bcc" ] - }, - "subject" : { - "type" : "string" - }, - "type" : { - "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] - } - }, - "required" : [ "type", "subject", "path" ] - }, { - "type" : "object", - "properties" : { - "body" : { - "type" : "string" - }, - "recipient-type" : { - "enum" : [ "cc", "bcc", "cc", "bcc" ] - }, - "subject" : { - "type" : "string" - }, - "type" : { - "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] - } - }, - "required" : [ "type", "subject", "body" ] - } ] - }, - "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.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" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.interval" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpressionArg" - } ] - }, - "metabase.legacy-mbql.schema.Aggregation" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation-options" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.UnnamedAggregation" - } ] - }, - "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.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" : [ { - "$ref" : "#/components/schemas/metabase.lib.schema.id.saved-questions-virtual-database" - }, { - "$ref" : "#/components/schemas/metabase.lib.schema.id.database" - } ] - }, - "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.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" : [ "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.legacy-mbql.schema.DateUnit" : { - "description" : "Valid unit for date bucketing.", - "type" : "string", - "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.legacy-mbql.schema.DatetimeDiffUnit" : { - "description" : "Valid units for a datetime-diff clause.", - "type" : "string", - "enum" : [ "second", "minute", "hour", "day", "week", "month", "quarter", "year" ] - }, - "metabase.legacy-mbql.schema.DatetimeExpression" : { - "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" + }, + "recipient-type" : { + "enum" : [ "cc", "bcc", "cc", "bcc" ] + }, + "subject" : { + "type" : "string" + }, + "type" : { + "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] + } }, - "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" + "required" : [ "type", "subject", "path" ] }, { - "$ref" : "#/components/schemas/metabase.lib.schema.parameter.variable" + "type" : "object", + "properties" : { + "body" : { + "type" : "string" + }, + "recipient-type" : { + "enum" : [ "cc", "bcc", "cc", "bcc" ] + }, + "subject" : { + "type" : "string" + }, + "type" : { + "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] + } + }, + "required" : [ "type", "subject", "body" ] } ] }, - "metabase.lib.schema.parameter.template-tag" : { - "type" : "array", - "prefixItems" : [ { - "const" : "template-tag" + "metabase.lib.schema.common.non-blank-string" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.expression.temporal.timezone-id" : { + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" }, { - "oneOf" : [ { - "type" : "object", - "properties" : { - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" - } - }, - "required" : [ "id" ] + "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.common.non-blank-string" + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" } ] } ] }, - "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.id.card" : { + "type" : "integer", + "minimum" : 1 }, - "metabase.lib.schema.parameter.variable" : { - "type" : "array", - "prefixItems" : [ { - "const" : "variable" + "metabase.lib.schema.id.field" : { + "type" : "integer", + "minimum" : 1 + }, + "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})?)?$" }, { - "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + "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.parameter.widget-type" : { + "metabase.lib.schema.literal..string.zone-offset" : { "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/<=" ] + "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" }, - "metabase.lib.schema.template-tag..raw-value.type" : { + "metabase.lib.schema.metadata..column.has-field-values" : { "type" : "string", - "enum" : [ "date", "number", "boolean", "text" ] + "enum" : [ "auto-list", "list", "none", "search" ] }, "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" ] @@ -4298,69 +1375,7 @@ } }, "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", @@ -4430,72 +1445,7 @@ } }, "required" : [ "payload_type", "payload" ] - }, { - "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_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" ] - } ] + }, { } ] }, { "oneOf" : [ { "type" : "object", @@ -4552,64 +1502,10 @@ "items" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" } - } - }, - "required" : [ "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" ] - } - }, - "subscriptions" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" - } - } - } - } ] + } + }, + "required" : [ "payload" ] + }, { } ] } ] }, "metabase.notification.models.Notification" : { @@ -4925,16 +1821,6 @@ } } }, - "metabase.timeline.api.timeline.Timeline" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "id" ] - }, "metabase.timeline.api.timeline.include" : { "type" : "string", "enum" : [ "events" ] @@ -4994,18 +1880,6 @@ } }, "required" : [ "schedule_type" ] - }, - "metabot.reaction.redirect" : { - "type" : "object", - "properties" : { - "type" : { - "const" : "metabot.reaction/redirect" - }, - "url" : { - "type" : "string" - } - }, - "required" : [ "type", "url" ] } } }, @@ -5024,34 +1898,12 @@ }, "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" : { @@ -5156,17 +2008,6 @@ "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" ] } }, @@ -5184,17 +2025,6 @@ }, "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" : { @@ -5210,17 +2040,6 @@ }, "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" ] } }, @@ -5246,17 +2065,6 @@ }, "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" ] } }, @@ -5274,17 +2082,6 @@ }, "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" : { @@ -5404,17 +2201,6 @@ }, "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" : { @@ -5448,17 +2234,6 @@ }, "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" : { @@ -5474,17 +2249,6 @@ }, "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" ] } }, @@ -5493,17 +2257,6 @@ "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" ] } }, @@ -5512,17 +2265,6 @@ "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" ] } }, @@ -5531,17 +2273,6 @@ "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" ] } }, @@ -5569,34 +2300,12 @@ "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" : { @@ -5647,17 +2356,6 @@ }, "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" ] } }, @@ -5675,17 +2373,6 @@ }, "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" ] } }, @@ -5703,17 +2390,6 @@ }, "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" ] } }, @@ -5722,17 +2398,6 @@ "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" ] } }, @@ -5741,17 +2406,6 @@ "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" : { @@ -5779,17 +2433,6 @@ "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" ] } }, @@ -5798,17 +2441,6 @@ "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" ] } }, @@ -5826,17 +2458,6 @@ }, "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" : { @@ -5872,17 +2493,6 @@ }, "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" ] } }, @@ -5900,17 +2510,6 @@ }, "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" ] } }, @@ -5928,17 +2527,6 @@ }, "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" ] } }, @@ -5961,17 +2549,6 @@ "type" : "integer" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6000,17 +2577,6 @@ } ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6055,17 +2621,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6119,17 +2674,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6185,17 +2729,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6260,17 +2793,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6318,17 +2840,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6345,17 +2856,6 @@ "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" ] } }, @@ -6405,17 +2905,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6474,17 +2963,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6493,17 +2971,6 @@ "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" ] } }, @@ -6512,17 +2979,6 @@ "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" : { @@ -6578,17 +3034,6 @@ }, "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" : { @@ -6612,17 +3057,6 @@ }, "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" ] } }, @@ -6631,17 +3065,6 @@ "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" ] } }, @@ -6650,17 +3073,6 @@ "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" ] } }, @@ -6700,34 +3112,12 @@ }, "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" : { @@ -6758,17 +3148,6 @@ "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" : { @@ -6848,17 +3227,6 @@ }, "description" : "A list of question ids" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/cache" ] } }, @@ -6885,34 +3253,12 @@ }, "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" : { @@ -7002,17 +3348,6 @@ "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" : { @@ -7046,17 +3381,6 @@ "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" ] } }, @@ -7074,17 +3398,6 @@ }, "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" : { @@ -7107,17 +3420,6 @@ "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" ] } }, @@ -7151,17 +3453,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7187,17 +3478,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7215,17 +3495,6 @@ }, "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" : { @@ -7241,17 +3510,6 @@ }, "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" ] } }, @@ -7264,28 +3522,11 @@ "name" : "card-id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "requestBody" : { "content" : { "application/json" : { @@ -7334,17 +3575,6 @@ "$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" : { @@ -7384,16 +3614,10 @@ "name" : "id", "required" : true, "schema" : { - "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}$" - } ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { "in" : "query", "name" : "ignore_view", @@ -7410,17 +3634,6 @@ "enum" : [ "collection" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] }, "put" : { @@ -7443,17 +3656,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -7555,17 +3757,6 @@ }, "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" ] } }, @@ -7583,17 +3774,6 @@ }, "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" ] } }, @@ -7611,17 +3791,6 @@ }, "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" ] } }, @@ -7653,17 +3822,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7676,28 +3834,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/card" ] } }, @@ -7735,17 +3876,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7754,17 +3884,6 @@ "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" : { @@ -7793,17 +3912,6 @@ "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" : { @@ -7842,17 +3950,6 @@ "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" : { @@ -7874,17 +3971,6 @@ "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" : { @@ -7924,17 +4010,6 @@ "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" : { @@ -7971,17 +4046,6 @@ }, "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" : { @@ -7997,17 +4061,6 @@ }, "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" : { @@ -8045,34 +4098,12 @@ "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" ] } }, @@ -8081,17 +4112,6 @@ "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" ] } }, @@ -8132,34 +4152,12 @@ "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" : { @@ -8209,17 +4207,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] }, "put" : { @@ -8242,17 +4229,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -8293,17 +4269,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8312,24 +4277,6 @@ "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" ] } }, @@ -8411,17 +4358,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8430,24 +4366,6 @@ "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" : { @@ -8477,17 +4395,6 @@ "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" ] } }, @@ -8537,17 +4444,6 @@ }, "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" ] } }, @@ -8560,28 +4456,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/collection" ] }, "put" : { @@ -8597,17 +4476,6 @@ }, "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" : { @@ -8658,24 +4526,6 @@ }, "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" ] } }, @@ -8688,16 +4538,10 @@ "name" : "id", "required" : true, "schema" : { - "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}$" - } ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { "in" : "query", "name" : "models", @@ -8765,17 +4609,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8793,24 +4626,6 @@ }, "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" : { @@ -8848,34 +4663,12 @@ "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" : { @@ -8924,17 +4717,6 @@ "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" ] } }, @@ -8967,17 +4749,6 @@ } } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -9013,17 +4784,6 @@ }, "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" : { @@ -9062,17 +4822,6 @@ "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" ] } }, @@ -9081,17 +4830,6 @@ "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" ] } }, @@ -9109,17 +4847,6 @@ }, "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" ] } }, @@ -9155,17 +4882,6 @@ }, "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" : { @@ -9242,17 +4958,6 @@ "$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" : { @@ -9331,17 +5036,6 @@ }, "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" : { @@ -9366,17 +5060,6 @@ }, "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" : { @@ -9409,17 +5092,6 @@ }, "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" : { @@ -9435,17 +5107,6 @@ }, "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" ] } }, @@ -9463,17 +5124,6 @@ }, "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" : { @@ -9519,28 +5169,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -9556,17 +5189,6 @@ }, "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" : { @@ -9582,17 +5204,6 @@ }, "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" : { @@ -9759,17 +5370,6 @@ }, "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" : { @@ -9877,17 +5477,6 @@ }, "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" ] } }, @@ -9919,17 +5508,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -9955,17 +5533,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -9983,17 +5550,6 @@ }, "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" ] } }, @@ -10006,28 +5562,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/dashboard" ] } }, @@ -10045,17 +5584,6 @@ }, "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" ] } }, @@ -10121,34 +5649,12 @@ }, "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" : { @@ -10207,17 +5713,6 @@ "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" ] } }, @@ -10226,17 +5721,6 @@ "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" : { @@ -10303,17 +5787,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] }, "put" : { @@ -10329,17 +5802,6 @@ }, "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" : { @@ -10408,17 +5870,6 @@ }, "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" ] } }, @@ -10452,17 +5903,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10495,17 +5935,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10523,17 +5952,6 @@ }, "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" ] } }, @@ -10551,17 +5969,6 @@ }, "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" ] } }, @@ -10579,17 +5986,6 @@ }, "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" ] } }, @@ -10607,17 +6003,6 @@ }, "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" ] } }, @@ -10635,17 +6020,6 @@ }, "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" ] } }, @@ -10695,17 +6069,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10723,17 +6086,6 @@ }, "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" ] } }, @@ -10767,17 +6119,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10811,17 +6152,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10855,17 +6185,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10883,17 +6202,6 @@ }, "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" ] } }, @@ -10911,17 +6219,6 @@ }, "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" ] } }, @@ -10939,17 +6236,6 @@ }, "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" ] } }, @@ -10958,17 +6244,6 @@ "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" ] } }, @@ -10977,17 +6252,6 @@ "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" ] } }, @@ -10996,17 +6260,6 @@ "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" ] } }, @@ -11015,17 +6268,6 @@ "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" ] } }, @@ -11034,17 +6276,6 @@ "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" ] } }, @@ -11053,17 +6284,6 @@ "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" : { @@ -11086,17 +6306,6 @@ "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" : { @@ -11126,17 +6335,6 @@ "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" : { @@ -11175,17 +6373,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -11215,17 +6402,6 @@ "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" : { @@ -11255,17 +6431,6 @@ "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" : { @@ -11291,17 +6456,6 @@ "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" : { @@ -11334,17 +6488,6 @@ "$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" : { @@ -11382,17 +6525,6 @@ "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" : { @@ -11415,17 +6547,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -11462,17 +6583,6 @@ }, "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" ] } }, @@ -11490,17 +6600,6 @@ }, "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" ] } }, @@ -11509,17 +6608,6 @@ "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" : { @@ -11567,17 +6655,6 @@ "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" : { @@ -11612,17 +6689,6 @@ "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" : { @@ -11652,17 +6718,6 @@ "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" ] } }, @@ -11680,17 +6735,6 @@ }, "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" ] } }, @@ -11699,17 +6743,6 @@ "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" : { @@ -11790,17 +6823,6 @@ }, "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" ] } }, @@ -11809,17 +6831,6 @@ "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" ] } }, @@ -11828,17 +6839,6 @@ "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" ] } }, @@ -11854,17 +6854,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -11873,17 +6862,6 @@ "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" : { @@ -11909,60 +6887,6 @@ "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", @@ -11975,17 +6899,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -12038,17 +6951,6 @@ }, "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" : { @@ -12067,111 +6969,11 @@ "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" : { @@ -12194,41 +6996,12 @@ "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" ] } }, @@ -12237,17 +7010,6 @@ "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" ] } }, @@ -12256,30 +7018,6 @@ "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" ] } }, @@ -12297,17 +7035,6 @@ }, "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" ] } }, @@ -12316,32 +7043,6 @@ "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" : { @@ -12370,35 +7071,6 @@ "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" : { @@ -12427,32 +7099,6 @@ "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" : { @@ -12481,32 +7127,6 @@ "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" : { @@ -12535,32 +7155,6 @@ "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" : { @@ -12595,32 +7189,6 @@ "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" : { @@ -12633,57 +7201,22 @@ "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" : [ "arguments", "conversation_id" ] - } - } - } - }, - "tags" : [ "/api/ee/metabot-tools" ] - } - }, - "/api/ee/metabot-tools/generate-insights" : { - "post" : { - "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" ] - } + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "arguments", "conversation_id" ] } } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" } }, + "tags" : [ "/api/ee/metabot-tools" ] + } + }, + "/api/ee/metabot-tools/generate-insights" : { + "post" : { + "summary" : "POST /api/ee/metabot-tools/generate-insights", + "description" : "Generate insights.", + "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { @@ -12712,32 +7245,6 @@ "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" : { @@ -12755,32 +7262,6 @@ "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" : { @@ -12815,32 +7296,6 @@ "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" : { @@ -12869,32 +7324,6 @@ "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" : { @@ -12930,32 +7359,6 @@ "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" : { @@ -12984,32 +7387,6 @@ "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" : { @@ -13038,32 +7415,6 @@ "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" : { @@ -13092,32 +7443,6 @@ "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" : { @@ -13146,17 +7471,6 @@ "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" ] } }, @@ -13173,17 +7487,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13200,17 +7503,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "put" : { @@ -13225,17 +7517,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -13297,17 +7578,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13347,17 +7617,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "delete" : { @@ -13372,17 +7631,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13399,17 +7647,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13434,17 +7671,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13453,17 +7679,6 @@ "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" : { @@ -13506,17 +7721,6 @@ "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" : { @@ -13554,39 +7758,48 @@ "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" ] } }, @@ -13621,34 +7834,12 @@ "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" : { @@ -13709,34 +7900,12 @@ "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" : { @@ -13795,17 +7964,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/scim/v2" ] } }, @@ -13840,34 +7998,12 @@ "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" : { @@ -13971,34 +8107,12 @@ "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" : { @@ -14100,17 +8214,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -14244,17 +8347,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/serialization" ] } }, @@ -14279,17 +8371,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -14374,17 +8455,6 @@ "enum" : [ "asc", "desc" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/stale" ] } }, @@ -14393,17 +8463,6 @@ "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" ] } }, @@ -14428,18 +8487,7 @@ "type" : "boolean", "default" : false } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, + } ], "tags" : [ "/api/ee/upload-management" ] } }, @@ -14448,17 +8496,6 @@ "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" : { @@ -14483,59 +8520,12 @@ "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" : { - "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" - } ] - } - } + "properties" : { } } } } @@ -14546,17 +8536,6 @@ "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" ] } }, @@ -14565,17 +8544,6 @@ "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" ] } }, @@ -14591,17 +8559,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14631,17 +8588,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14650,17 +8596,6 @@ "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" ] } }, @@ -14683,17 +8618,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14709,17 +8633,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14758,17 +8671,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14784,17 +8686,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14828,17 +8719,6 @@ }, "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" ] } }, @@ -14888,17 +8768,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14907,17 +8776,6 @@ "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" ] } }, @@ -14926,17 +8784,6 @@ "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" ] } }, @@ -14959,17 +8806,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14985,17 +8821,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -15029,17 +8854,6 @@ }, "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" ] } }, @@ -15101,17 +8915,6 @@ }, "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" ] } }, @@ -15191,17 +8994,6 @@ }, "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" ] } }, @@ -15227,17 +9019,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] }, "put" : { @@ -15253,17 +9034,6 @@ }, "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" : { @@ -15341,17 +9111,6 @@ }, "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" : { @@ -15392,17 +9151,6 @@ }, "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" ] } }, @@ -15420,17 +9168,6 @@ }, "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" ] } }, @@ -15448,17 +9185,6 @@ }, "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" ] } }, @@ -15493,17 +9219,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] } }, @@ -15521,17 +9236,6 @@ }, "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" ] } }, @@ -15566,17 +9270,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] } }, @@ -15594,17 +9287,6 @@ }, "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" ] } }, @@ -15622,17 +9304,6 @@ }, "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" : { @@ -15648,17 +9319,6 @@ }, "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" : { @@ -15702,17 +9362,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/geojson" ] } }, @@ -15729,17 +9378,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/geojson" ] } }, @@ -15748,17 +9386,6 @@ "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" : { @@ -15787,17 +9414,6 @@ "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" : { @@ -15830,17 +9446,6 @@ "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" : { @@ -15866,17 +9471,6 @@ "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" ] } }, @@ -15885,17 +9479,6 @@ "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" ] } }, @@ -15904,51 +9487,6 @@ "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" ] } }, @@ -15957,17 +9495,6 @@ "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" ] } }, @@ -15976,17 +9503,6 @@ "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" : { @@ -16021,17 +9537,6 @@ }, "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" ] } }, @@ -16049,17 +9554,6 @@ }, "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" : { @@ -16075,17 +9569,6 @@ }, "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" ] } }, @@ -16094,17 +9577,6 @@ "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" : { @@ -16158,34 +9630,12 @@ }, "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" : { @@ -16222,17 +9672,6 @@ "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" : { @@ -16272,17 +9711,6 @@ }, "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" : { @@ -16297,18 +9725,7 @@ "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" - } - }, + } ], "requestBody" : { "content" : { "application/json" : { @@ -16341,17 +9758,6 @@ }, "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" ] } }, @@ -16360,17 +9766,6 @@ "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" ] } }, @@ -16388,17 +9783,6 @@ }, "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" : { @@ -16431,34 +9815,12 @@ "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" : { @@ -16502,17 +9864,6 @@ }, "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" : { @@ -16528,17 +9879,6 @@ }, "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" : { @@ -16626,34 +9966,12 @@ "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" : { @@ -16671,17 +9989,6 @@ "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" : { @@ -16699,17 +10006,6 @@ "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" : { @@ -16741,17 +10037,6 @@ "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" : { @@ -16792,17 +10077,6 @@ }, "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" : { @@ -16818,17 +10092,6 @@ }, "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" : { @@ -16855,17 +10118,6 @@ }, "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" : { @@ -16902,17 +10154,6 @@ }, "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" ] } }, @@ -16921,17 +10162,6 @@ "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" : { @@ -16972,17 +10202,6 @@ }, "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" : { @@ -17024,17 +10243,6 @@ }, "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" : { @@ -17063,17 +10271,6 @@ "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" : { @@ -17096,17 +10293,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -17134,17 +10320,6 @@ }, "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" ] } }, @@ -17162,17 +10337,6 @@ }, "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" ] } }, @@ -17181,34 +10345,12 @@ "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" : { @@ -17242,17 +10384,6 @@ }, "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" : { @@ -17284,17 +10415,6 @@ }, "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" ] } }, @@ -17312,17 +10432,6 @@ }, "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" ] } }, @@ -17331,34 +10440,12 @@ "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" : { @@ -17402,17 +10489,6 @@ }, "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" ] } }, @@ -17430,17 +10506,6 @@ }, "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" : { @@ -17471,17 +10536,6 @@ }, "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" ] } }, @@ -17490,17 +10544,6 @@ "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" ] } }, @@ -17518,17 +10561,6 @@ }, "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" ] } }, @@ -17546,17 +10578,6 @@ }, "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" ] } }, @@ -17574,17 +10595,6 @@ }, "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" ] } }, @@ -17602,17 +10612,6 @@ }, "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" ] } }, @@ -17630,17 +10629,6 @@ }, "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" ] } }, @@ -17658,17 +10646,6 @@ }, "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" ] } }, @@ -17677,17 +10654,6 @@ "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" ] } }, @@ -17696,17 +10662,6 @@ "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" ] } }, @@ -17715,17 +10670,6 @@ "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" : { @@ -17760,17 +10704,6 @@ }, "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" ] } }, @@ -17779,17 +10712,6 @@ "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" ] } }, @@ -17806,17 +10728,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17846,17 +10757,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17873,17 +10773,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17900,17 +10789,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17945,17 +10823,6 @@ }, "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" ] } }, @@ -17964,17 +10831,6 @@ "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" ] } }, @@ -17983,17 +10839,6 @@ "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" ] } }, @@ -18010,17 +10855,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -18055,17 +10889,6 @@ }, "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" ] } }, @@ -18074,17 +10897,6 @@ "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" : { @@ -18126,17 +10938,6 @@ }, "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" ] } }, @@ -18154,17 +10955,6 @@ }, "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" : { @@ -18197,17 +10987,6 @@ }, "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" ] } }, @@ -18238,17 +11017,6 @@ "required" : true, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18282,17 +11050,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18318,17 +11075,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18354,17 +11100,6 @@ }, "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" ] } }, @@ -18410,20 +11145,9 @@ "required" : false, "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" - } - }, + }, + "description" : "value must be a valid JSON string." + } ], "tags" : [ "/api/public" ] } }, @@ -18441,17 +11165,6 @@ }, "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" ] } }, @@ -18495,17 +11208,6 @@ }, "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" ] } }, @@ -18548,17 +11250,6 @@ "$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" : { @@ -18620,17 +11311,6 @@ }, "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" : { @@ -18655,17 +11335,6 @@ }, "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" : { @@ -18711,17 +11380,6 @@ "required" : true, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18755,17 +11413,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18791,17 +11438,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18845,17 +11481,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18881,17 +11506,6 @@ }, "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" ] } }, @@ -18935,17 +11549,6 @@ }, "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" ] } }, @@ -19009,17 +11612,6 @@ }, "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" ] } }, @@ -19101,17 +11693,6 @@ }, "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" ] } }, @@ -19145,34 +11726,12 @@ "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" : { @@ -19225,17 +11784,6 @@ "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" ] } }, @@ -19253,17 +11801,6 @@ }, "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" ] } }, @@ -19281,17 +11818,6 @@ }, "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" ] } }, @@ -19309,17 +11835,6 @@ }, "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" ] } }, @@ -19337,17 +11852,6 @@ }, "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" ] } }, @@ -19356,17 +11860,6 @@ "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" : { @@ -19412,17 +11905,6 @@ "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" : { @@ -19454,17 +11936,6 @@ "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" : { @@ -19505,17 +11976,6 @@ }, "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" : { @@ -19531,17 +11991,6 @@ }, "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" : { @@ -19598,17 +12047,6 @@ }, "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" ] } }, @@ -19634,17 +12072,6 @@ "enum" : [ "card", "dashboard", "segment" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/revision" ] } }, @@ -19653,17 +12080,6 @@ "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" : { @@ -19715,24 +12131,13 @@ }, "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 - `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.", + "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.", "parameters" : [ { "in" : "query", "name" : "q", @@ -19804,24 +12209,6 @@ "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", @@ -19907,17 +12294,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] } }, @@ -19926,17 +12302,6 @@ "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" ] } }, @@ -19945,17 +12310,6 @@ "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" ] } }, @@ -19977,17 +12331,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] }, "put" : { @@ -20007,17 +12350,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] } }, @@ -20026,17 +12358,6 @@ "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" : { @@ -20072,17 +12393,6 @@ "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" ] } }, @@ -20100,17 +12410,6 @@ }, "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" : { @@ -20126,17 +12425,6 @@ }, "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" : { @@ -20199,17 +12487,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/segment" ] } }, @@ -20227,17 +12504,6 @@ }, "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" ] } }, @@ -20246,17 +12512,6 @@ "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" : { @@ -20283,17 +12538,6 @@ "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" ] } }, @@ -20302,17 +12546,6 @@ "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" : { @@ -20337,17 +12570,6 @@ "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" : { @@ -20372,17 +12594,6 @@ "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" : { @@ -20415,17 +12626,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/session" ] } }, @@ -20434,17 +12634,6 @@ "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" ] } }, @@ -20453,17 +12642,6 @@ "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" : { @@ -20492,34 +12670,12 @@ "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" : { @@ -20545,17 +12701,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/setting" ] }, "put" : { @@ -20569,30 +12714,6 @@ "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" ] } }, @@ -20601,17 +12722,6 @@ "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" : { @@ -20691,17 +12801,6 @@ "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" ] } }, @@ -20710,17 +12809,6 @@ "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" : { @@ -20742,19 +12830,8 @@ "/api/slack/manifest" : { "get" : { "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" - } - }, + "description" : "Returns the YAML manifest file that should be used to bootstrap new Slack apps", + "parameters" : [ ], "tags" : [ "/api/slack" ] } }, @@ -20763,17 +12840,6 @@ "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" : { @@ -20800,34 +12866,12 @@ "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" : { @@ -20888,17 +12932,6 @@ }, "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" ] } }, @@ -20916,17 +12949,6 @@ }, "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" ] } }, @@ -20951,17 +12973,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/table" ] }, "put" : { @@ -20977,17 +12988,6 @@ }, "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" : { @@ -21043,17 +13043,6 @@ }, "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" : { @@ -21093,17 +13082,6 @@ }, "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" ] } }, @@ -21121,30 +13099,6 @@ }, "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" : { @@ -21176,17 +13130,6 @@ }, "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" ] } }, @@ -21228,17 +13171,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/table" ] } }, @@ -21256,17 +13188,6 @@ }, "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" ] } }, @@ -21284,17 +13205,6 @@ }, "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" : { @@ -21307,418 +13217,109 @@ "filename" : { "type" : "string" }, - "tempfile" : { } - }, - "required" : [ "filename", "tempfile" ] - } - }, - "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" + "tempfile" : { } + }, + "required" : [ "filename", "tempfile" ] } }, - "required" : [ "id", "model" ] + "required" : [ "file" ] } } } }, - "tags" : [ "/api/testing" ] - } - }, - "/api/testing/refresh-caches" : { - "post" : { - "summary" : "POST /api/testing/refresh-caches", - "description" : "Manually triggers the cache refresh task, if Enterprise code is available.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "tags" : [ "/api/table" ] } }, - "/api/testing/restore/{name}" : { + "/api/table/{id}/rescan_values" : { "post" : { - "summary" : "POST /api/testing/restore/{name}", - "description" : "Restore a database snapshot for testing purposes.", + "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" : "name", + "name" : "id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/set-time" : { + "/api/table/{id}/sync_schema" : { "post" : { - "summary" : "POST /api/testing/set-time", - "description" : "Make java-time see world at exact time.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "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 }, - "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" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/snapshot/{name}" : { - "post" : { - "summary" : "POST /api/testing/snapshot/{name}", - "description" : "Snapshot the database for testing purposes.", + "/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" : "name", + "name" : "table-id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/stats" : { - "post" : { - "summary" : "POST /api/testing/stats", - "description" : "Triggers a send of instance usage stats", + "/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" + "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" ] + } + }, + "/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" : [ ], + "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 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/task" ] } }, "/api/tiles/{card-id}/{zoom}/{x}/{y}/{lat-field}/{lon-field}" : { @@ -21781,17 +13382,6 @@ }, "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" ] } }, @@ -21873,17 +13463,6 @@ }, "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" ] } }, @@ -21900,17 +13479,6 @@ }, "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" ] } }, @@ -21919,17 +13487,6 @@ "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" : { @@ -21997,17 +13554,6 @@ }, "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" : { @@ -22023,17 +13569,6 @@ }, "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" : { @@ -22089,17 +13624,6 @@ }, "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" ] } }, @@ -22108,24 +13632,6 @@ "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" : { @@ -22181,27 +13687,6 @@ "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" ] } }, @@ -22225,17 +13710,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/timeline" ] } }, @@ -22268,17 +13742,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/timeline" ] } }, @@ -22327,24 +13790,6 @@ }, "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" : { @@ -22360,17 +13805,6 @@ }, "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" : { @@ -22419,17 +13853,6 @@ }, "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" ] } }, @@ -22438,17 +13861,6 @@ "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" : { @@ -22491,17 +13903,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/user-key-value" ] } }, @@ -22526,17 +13927,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -22574,34 +13964,12 @@ "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" ] } }, @@ -22641,34 +14009,12 @@ "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" : { @@ -22712,17 +14058,6 @@ "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" ] } }, @@ -22731,17 +14066,6 @@ "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" ] } }, @@ -22759,17 +14083,6 @@ }, "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" : { @@ -22785,17 +14098,6 @@ }, "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" : { @@ -22856,17 +14158,6 @@ }, "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" ] } }, @@ -22884,17 +14175,6 @@ }, "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" ] } }, @@ -22912,17 +14192,6 @@ }, "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" : { @@ -22956,17 +14225,6 @@ }, "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" ] } }, @@ -22975,17 +14233,6 @@ "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 2cf23de98e..34c9694a40 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](/docs/latest/configuring-metabase/appearance). +- [Brand your Metabase](/learn/metabase-basics/embedding/brand). diff --git a/_docs/master/configuring-metabase/setting-up-metabase.md b/_docs/master/configuring-metabase/setting-up-metabase.md index 8eae745476..3bb6c7a348 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/data-modeling/formatting.md b/_docs/master/data-modeling/formatting.md index 23d66fe938..820db38db7 100644 --- a/_docs/master/data-modeling/formatting.md +++ b/_docs/master/data-modeling/formatting.md @@ -7,36 +7,158 @@ category: 'Data Modeling' title: 'Formatting defaults' source_url: 'https://github.com/metabase/metabase/blob/master/docs/data-modeling/formatting.md' layout: new-docs +summary: 'Configure how dates, numbers, currencies, and text display in Metabase at global, field, and question levels.' redirect_from: - /docs/master/administration-guide/19-formatting-settings --- # Formatting defaults -There are Metabase users around the world, each with different preferences for how dates, times, numbers, and currencies should be formatted and displayed. Metabase allows you to customize these formatting options at three different levels: +People all around the world use Metabase, and everyone has different preferences for how dates, times, numbers, and currencies should be formatted and displayed. Metabase lets you to customize these formatting options at three different levels: -1. **Global**. Set global defaults in the [Localization](../configuring-metabase/localization) section in Admin -> Settings -> Localization. +1. **Global**. Set global defaults in Admin -> Settings -> [Localization](../configuring-metabase/localization). 2. **Field**. Set field (column) defaults in Admin -> Table Metadata. Field defaults override global defaults. 3. **Question**. Set formatting defaults for individual questions in the visualization settings of that question. Question defaults override global and field defaults. -## Field-level formatting +## Field formatting -You can override the global defaults for a specific field by going to the `Table Metadata` section of the Admin Panel, selecting the database and table of the field in question, and clicking the gear icon on the far right of the screen next to that field to go to its options page, then clicking on the `Formatting` tab. +_Admin settings > Table Metadata > Database > Table > Field > Formatting_ -The options you'll see here will depend on the field's type. They're generally the same options as in the global formatting settings, with a few additions: +You can override the global defaults for a specific field by going to the `Table Metadata` section of the Admin Panel. Select the database and table of the field in question, then click scroll down to the **Formatting**. -### Dates and Times +## Formatting options depend on the data type and the semantic type -- `Show the time:` this lets you choose if this time field should be displayed by default without the time; with hours and minutes; with hours, minutes, and seconds; or additionally with milliseconds. +The options you'll see here will depend on the field's data type and it's [semantic type](./semantic-types). -### Numbers +## Text formatting options -- `Show a mini bar chart:` only applies to table visualizations. Displays a bar for each value to show large or small it is relative to the other values in the column. -- `Style:` lets you choose to display the number as a plain number, a percent, in scientific notation, or as a currency. -- `Separator style:` this gives you various options for how commas and periods are used to separate the number. -- `Number of decimal places:` forces the number to be displayed with exactly this many decimal places. -- `Multiply by a number:` multiplies this number by whatever you type here. -- `Add a prefix/suffix:` lets you put a symbol, word, etc. before or after this number. +_Admin settings > Table Metadata > Database > Table > Field > Formatting_ + +Options depend on the [semantic type](./semantic-types) you select for the field. + +### Align + +Whether to display the values in the middle, left, or right in table cells. + +### Display As + +If you have text, like an image URL, you may need to change the semantic type before Metabase will offer you the option to display the text as an image. + +- Text (display "as is"). +- Email link (i.e., if you have a `mailto` link). +- Image. Metabase will display links to images as images in tables. +- Automatic. Metabase will detect the string based on its format. +- Link. You can optionally change the text that you want to display in the **Link text** input field. For example, if you set the **Link URL** for an "Adjective" column to: + +``` +https://www.google.com/search?q={% raw %}{{adjective}}{% endraw %} +``` + +When someone clicks on the value "askew" in the "Adjective" column, they'll be taken to the Google search URL: + +``` +https://www.google.com/search?q=askew +``` + +## Dates and times + +_Admin settings > Table Metadata > Database > Table > Field > Formatting_ + +Options depend on the [semantic type](./semantic-types) you select for the field. + +### Align + +Whether to display the values in the middle, left, or right in table cells. + +### Display as + +- **Text** (display "as is"). +- **Link** (display the date/time as a clickable link). + +### Date style + +Choose how dates are displayed. Options include formats like: + +- January 31, 2018 +- 31/01/2018 +- 2018-01-31 +- And other regional date formats + +### Abbreviate days and months + +Check this option to use abbreviated forms for days and months (e.g., "Jan" instead of "January", "Mon" instead of "Monday"). + +### Show the time + +This lets you choose if this time field should be displayed by default without the time; with hours and minutes; with hours, minutes, and seconds; or additionally with milliseconds. + +- **Off** - Display only the date without time +- **HH:MM** - Display hours and minutes +- **HH:MM:SS** - Display hours, minutes, and seconds +- **HH:MM:SS.MS** - Display hours, minutes, seconds, and milliseconds + +### Time style + +Choose between 12-hour and 24-hour time format: + +- **12-hour clock** (e.g., 5:24 PM) +- **24-hour clock** (e.g., 17:24) + +## Numbers + +_Admin settings > Table Metadata > Database > Table > Field > Formatting_ + +Options depend on the [semantic type](./semantic-types) you select for the field. + +### Align + +Whether to display the values in the middle, left, or right in table cells. + +### Show a mini bar chart + +Only applies to table visualizations. Displays a bar for each value to show large or small it is relative to the other values in the column. + +### Display as + +- **Automatic** - Metabase will automatically detect the best display format +- **Text** - Display the number as plain text +- **Link** - Display the number as a clickable link + +### Style + +Lets you choose to display the number as a plain number, a percent, in scientific notation, or as a currency. + +- **Normal** - Display as a regular number +- **Percent** - Display as a percentage +- **Scientific notation** - Display in scientific format (e.g., 1.23e+4) +- **Currency** - Display with currency formatting + +### Where to display the unit of currency + +For currency fields, choose where to show the currency symbol: + +- **In the column heading** - Show the currency symbol in the table header +- **In every table cell** - Show the currency symbol next to each value + +### Separator style + +This gives you various options for how commas and periods are used to separate the number (e.g., 100,000.00, 100.000,00, 100 000.00). + +### Number of decimal places + +Forces the number to be displayed with exactly this many decimal places. + +### Multiply by a number + +Multiplies this number by whatever you type here. Useful for unit conversions or scaling values. + +### Add a prefix + +Lets you put a symbol, word, etc. before this number (e.g., "$" for currency). + +### Add a suffix + +Lets you put a symbol, word, etc. after this number (e.g., "dollars", "%", "units"). ### Currency @@ -46,7 +168,7 @@ See [Currency formatting options](../questions/visualizations/table#currency-for ## Question-level formatting -Lastly, you can override all formatting settings in any specific saved question or dashboard card by clicking on the gear to open up the visualization options. To reset any overridden setting to the default, just click on the rotating arrow icon next to the setting's label. This will reset the setting to the field-level setting if there is one; otherwise it will be reset to the global default. +You can also override all formatting settings in any specific saved question or dashboard card by clicking on the gear to open the visualization options. To reset any overridden setting to the default, just click on the rotating arrow icon next to the setting's label. This will reset the setting to the field-level setting if there is one; otherwise it will be reset to the global default. Formatting options vary depending on the type of visualization: diff --git a/_docs/master/data-modeling/images/column-settings.png b/_docs/master/data-modeling/images/column-settings.png deleted file mode 100644 index 6a8819a170..0000000000 Binary files a/_docs/master/data-modeling/images/column-settings.png and /dev/null differ diff --git a/_docs/master/data-modeling/images/field-filtering-preview.png b/_docs/master/data-modeling/images/field-filtering-preview.png new file mode 100644 index 0000000000..68dc081c37 Binary files /dev/null and b/_docs/master/data-modeling/images/field-filtering-preview.png differ diff --git a/_docs/master/data-modeling/images/format-as-url.png b/_docs/master/data-modeling/images/format-as-url.png deleted file mode 100644 index 65d35ce0da..0000000000 Binary files a/_docs/master/data-modeling/images/format-as-url.png and /dev/null differ diff --git a/_docs/master/data-modeling/images/original-schema.png b/_docs/master/data-modeling/images/original-schema.png deleted file mode 100644 index 6ed4ac9c1c..0000000000 Binary files a/_docs/master/data-modeling/images/original-schema.png and /dev/null differ diff --git a/_docs/master/data-modeling/images/table-metadata-settings.png b/_docs/master/data-modeling/images/table-metadata-settings.png new file mode 100644 index 0000000000..7531c1b9a1 Binary files /dev/null and b/_docs/master/data-modeling/images/table-metadata-settings.png differ diff --git a/_docs/master/data-modeling/images/table-metadata.png b/_docs/master/data-modeling/images/table-metadata.png deleted file mode 100644 index 73d3c7c159..0000000000 Binary files a/_docs/master/data-modeling/images/table-metadata.png and /dev/null differ diff --git a/_docs/master/data-modeling/images/unfold-json-setting.png b/_docs/master/data-modeling/images/unfold-json-setting.png index f69b404401..1527b522fe 100644 Binary files a/_docs/master/data-modeling/images/unfold-json-setting.png and b/_docs/master/data-modeling/images/unfold-json-setting.png differ diff --git a/_docs/master/data-modeling/json-unfolding.md b/_docs/master/data-modeling/json-unfolding.md index 66b9df2ac8..ab12368537 100644 --- a/_docs/master/data-modeling/json-unfolding.md +++ b/_docs/master/data-modeling/json-unfolding.md @@ -7,6 +7,7 @@ category: 'Data Modeling' title: 'Working with JSON' source_url: 'https://github.com/metabase/metabase/blob/master/docs/data-modeling/json-unfolding.md' layout: new-docs +summary: 'Learn how to unfold JSON columns into separate fields that you can filter on in the query builder.' --- # Working with JSON @@ -61,8 +62,8 @@ If performance degrades, or you'd rather keep the JSON contained in the original 4. Select the database that contains the field you want to update. 5. Select the table that contains the field. 6. Select the field containing the original JSON -7. Scroll to the **Unfold JSON** option and select **Yes** or **No**. If the column was unfolded, Metabase will have hidden this JSON columnn from view, so if you want the JSON column to be visible again, you'll need to change the column's visibility to **Everywhere**. -8. Scroll down and click on the **Re-scan this field**. +7. In the **Behavior** section, locate the **Unfold JSON** option and select **Yes** or **No**. If the column was unfolded, Metabase will have hidden this JSON columnn from view, so if you want the JSON column to be visible again, you'll need to change the column's visibility to **Everywhere**. +8. Scroll to the top and click the **Filter values** button and select **Re-scan this field**. ![Unfolded JSON setting](./images/unfold-json-setting.png) diff --git a/_docs/master/data-modeling/metadata-editing.md b/_docs/master/data-modeling/metadata-editing.md index d4198974d5..9fc1a559b9 100644 --- a/_docs/master/data-modeling/metadata-editing.md +++ b/_docs/master/data-modeling/metadata-editing.md @@ -13,117 +13,119 @@ redirect_from: # Table metadata admin settings -Metabase lets you add and edit metadata to your tables and columns so that you can manage your org's business logic as it changes. Go to the **Table Metadata** tab in your **Admin settings** to: +_Admin settings > Table metadata_ -- [Set display names and descriptions](#table-display-name). -- [Hide outdated data](#table-visibility). -- [Cast a text or number column to a date column](#casting-to-a-specific-data-type). -- [Change the style of a filter widget](#changing-the-filter-widget). -- [Display a column as a link](#displaying-a-column-as-a-link). +![Table metadata settings](./images/table-metadata-settings.png) -> The **Table Metadata** admin settings only affect the way data's displayed and interpreted in Metabase. None of the settings will change the data in your database. +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 -Click on a table name in the left sidebar to view the table's settings in Metabase. +_Admin settings > Table metadata > Database > Table_ -If you've got more than one database connected to Metabase, click on the database name (for example, "Sample Database") and select another database from the dropdown menu. Once you select a database, the tables in that database will appear in the sidebar. +You can search for tables, or use the tree navigation to find each of your connected databases and their tables. -![Table metadata](./images/table-metadata.png) +### Table display name and description -- [Change the display name](#table-display-name). -- [Add or edit the description](#table-description). -- [Show or hide the table across Metabase](#table-visibility). -- [View the original schema](#original-schema). -- [Edit column (field) settings](#column-field-settings). +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. -### Table display name +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. -To edit a table's display name in Metabase, click into the box that contains the current table name. Changes will be saved automatically once you click out of the box. +### Table sync options -### Table description +Actions you can take to refresh the schema or field values. For more, check out [syncs and scans](../databases/sync-scan). -To add a table description, click into the box below the table name. 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. +#### Sync table schema -### Table visibility +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. + +#### Scan field values -**Queryable** tables are visible across all of Metabase. +Metabase uses these values to populate dropdown filters. You can also [scan values for a specific field](#scan-values-for-a-specific-field). -**Hidden** tables won't show up in the [query builder](../questions/query-builder/editor) or [data reference](../exploration-and-organization/data-model-reference). But this is not a security feature: hidden tables can still be used in SQL questions if someone writes `SELECT * FROM hidden_table` from the [SQL editor](../questions/native-editor/writing-sql). To prevent people from writing queries against specific tables, see [data permissions](../permissions/data). +#### Discard cached field values -Tip: To hide all of the tables in a database (say, if you've migrated to a new database), click on the **hidden eye** icon beside "# queryable tables" in the left sidebar. +Clears cached values. Metabase will pull new values for display in your [filter widgets](#filtering). -### Original schema +### Table sorting -To remind yourself of column names and data types as they're stored in your database, click **Original schema** (below **Visibility**). +You can sort the fields in a table in different ways: -![Original schema](./images/original-schema.png) +- Automatically (Metabase decides for you) +- By how they appear in the database +- Alphabetically +- Custom order (just drag and drop to rearrange, then click "Done") -## Column (field) settings +### Table visibility -Select a database and click on a table's name in the sidebar to bring up basic column display settings: +You can toggle the visibility of a table by clicking on the **eye** icon next to the table name in the left sidebar navigation tree in the Table metadata tab. -- [Change the display name](#column-name) -- [Add or edit the description](#column-description) -- [Show or hide the column across Metabase](#column-visibility) -- [Set a default column order](#column-order) -- [Change the column's field type](#field-type) +**Hidden tables** won't show up in the [query builder](../questions/query-builder/editor) or [data reference](../exploration-and-organization/data-model-reference). **But this is not a permissions feature**: hidden tables can still be used in SQL questions if someone knows the name of the table. For example, `SELECT * FROM table_name` from the [SQL editor](../questions/native-editor/writing-sql) would return results. To prevent people from writing queries against specific tables, see [data permissions](../permissions/data). -For extra column settings, click on the **gear** icon at the right of a column's settings box: +To hide **all of the tables in a database** (say, if you've migrated to a new database), click on the **eye** icon next to the database name in the sidebar. -![Column settings](./images/column-settings.png) +## Field settings -- [Cast text or numbers to dates](#casting-to-a-specific-data-type) -- [Change the filter widget](#changing-the-filter-widget) (for example, to a dropdown menu) -- [Remap column values](#remapping-column-values) (for example, from "5" to "Great") -- [Display the column as a link](#displaying-a-column-as-a-link) +_Admin settings > Table Metadata > Database > Table > Field_ -### Column name +Fields are also known as Columns (see the [difference between fields and columns](/learn/grow-your-data-skills/data-fundamentals/database-basics#columns-vs-fields)). -To change the _global_ display name of a column in Metabase, click on the name of the column. For example, you could display "auth.user" as "User" to make the column more readable. People can use [models](./models) to give columns a display name that's local to the model. +## Field name and description -### Column description +To change the _global_ display name of a column in Metabase, click on the name of the column. For example, you could display "auth.user" as "User" to make the column more readable. People can also use [models](./models) to give columns a display name that's local to the model. To add a description, click into the box below the column name. Descriptions are displayed in the [data reference](../exploration-and-organization/data-model-reference) to help people interpret the column's values. You should consider adding a description if your column contains: -- abbreviations or codes -- zeroes, nulls, or blank values -- placeholder values, like `9999-99-99` +- Abbreviations or codes +- Zeroes, nulls, or blank values +- Placeholder values, like `9999-99-99` + +## Field preview + +![Field filtering preview](./images/field-filtering-preview.png) -### Column visibility +Click the preview button to see sample data from that field. -**Everywhere**: by default, users can see all of the columns in a table. +- Table preview +- Detail +- Filtering -**Only in detail views** 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". +## Scan values for a specific field -**Do not include** columns won't show up in the query builder or data reference. You can set "do not include" on sensitive columns (such as PII) or irrelevant columns. But this visibility option is a simple omit/hide option; it's not a security 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 prevent people from viewing certain columns, see [data sandboxing](../permissions/data-sandboxes). +_Admin settings > Table Metadata > Database > Table > Field_ -### Column order +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.) -Metabase defaults to the column order defined in your database schema. To reorder the column display order in question results and menus **manually**, click on the grab bar to the right of each column, and drag the column to a new position. +## Field data -To sort the columns **automatically**, click on the **sort** icon at the top right of the first column's settings box. The sorting options are: +_Admin settings > Table Metadata > Database > Table > Field_ -- **Database.** (Default) The order of columns as they appear in the database. -- **Alphabetical.** A, B, C... however the alphabet works. -- **Custom.** You choose the order. Metabase will automatically switch the sort order to "Custom" if you rearrange any of the columns. -- **Smart.** Metabase chooses for you. +### Field name -### Field type +This is the name of the field in the database itself. You can't change it in Metabase. -To change the [field type](../data-modeling/field-types) of a column, click on the **Type** dropdown menu in a column's setting box. You can also use the **Type** dropdown to label a column as an [entity key](/glossary/entity-key) (primary key) or [foreign key](/glossary/foreign-key) in Metabase (with no consequence to your database). +### Data type -### Casting to a specific data type +This is the data type of the field in the database. You can't change the data type in Metabase, but you can cast certain data types to another data type. -If you want Metabase to treat a text or number column as a datetime column: +### Cast to a specific data type -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click on the **gear** icon at the right of a column's settings box. -4. Scroll to **Cast to a specific data type** -5. Select a casting option. +If you want Metabase to treat a text or number column as a datetime column, you can cast it to that type. Casting data types won't affect the original data types in your database. -> Metabase currently supports limited casting options in **Cast to a specific data type**. If you need to cast to a type that's not available in Metabase, you can [create a SQL question](../questions/native-editor/writing-sql#starting-a-new-sql-query) that casts the data and [save it as a model](./models#create-a-model-from-a-saved-question), or create a view directly in your database. +For example, say you have a "Created At" column with a string [data type](/learn/grow-your-data-skills/data-fundamentals/data-types-overview) in your database. If you want to: + +- Create relative date filters, such as "Created At = Last week". +- Use "Created At" with formulas like [datetimeAdd](../questions/query-builder/expressions/datetimeadd). + +You can cast that string to a Date type. + +Casting options include: **Text to datetime casting options**: @@ -148,121 +150,78 @@ If you want Metabase to treat a text or number column as a datetime column: - Float->Integer - Datetime->Date -Casting is different from setting the [field type](./field-types). For example, say you have a "Created At" column with a string [data type](/learn/grow-your-data-skills/data-fundamentals/data-types-overview) in your database. You'll need to cast "Created At" to one of the datetime types above if you want to do things like: +If Metabase doesn't support the casting option you need, you can [create a SQL question](../questions/native-editor/writing-sql#starting-a-new-sql-query) that casts the data and [save it as a model](./models#create-a-model-from-a-saved-question), or create a view directly in your database. -- Create relative date filters, such as "Created At = Last week". -- Use "Created At" with formulas like [datetimeAdd](../questions/query-builder/expressions/datetimeadd). +## Field metadata -> Casting data types from the **Table Metadata** admin settings won't affect the original data types in your database. +_Admin settings > Table Metadata > Database > Table > Field_ -### Changing the filter widget +### Semantic type -To change a column's [filter widget](../dashboards/filters): +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. -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click on the **gear** icon at the right of a column's settings box. -4. Scroll to **Filtering on this field**. -5. Select a filter widget option. +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". -#### Filter widget options +See [semantic types](../data-modeling/semantic-types). -The default behavior for the `Is` filter for the field. +## Field behavior -- **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 list of checkboxes for values in a dropdown menu that people can select as search terms. -- **Plain input box**: Display a search box, but do NOT suggest autocompletions. - -### Changing a search box filter to a dropdown filter +_Admin settings > Table Metadata > Database > Table > Field_ -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. +### Field visibility -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Scroll to your column. -4. In the column's settings box, set **Type** to “Category”. -5. Set **Filtering on this field** to “A list of all values". +- **Everywhere**: By default, users can see all of the columns in a table. +- **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. -When you change a default filter to a dropdown filter, you'll trigger a database query that gets the first 1,000 distinct values (ordered ascending) for that column. Metabase will cache the first 100kB of text to display in the dropdown menu. If you have columns with more than 1,000 distinct values, or columns with text-heavy data, we recommend setting **Filtering on this field** to "Search box" instead. +To restrict what data people can view and query, see [data permissions](../permissions/data). -### Remapping column values +### Filtering -Say you have a column with the values 1, 2, and 3, and you want to map each number to the values "low", "medium" and "high". This kind of mapping can be done on columns that have numeric or foreign key [field types](#field-type). +The **Filtering** setting changes a column's default [filter widget](../dashboards/filters). Options include: -#### Remapping numbers +- **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. -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click **gear** icon at the right of a column's settings box. -4. Scroll to **Display values**. -5. Select "Custom mapping" from the dropdown menu. -6. Enter the display values under **Mapped values**. +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). -#### Remapping foreign keys +#### Changing a search box filter to a dropdown filter -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click **gear** icon at the right of a column's settings box. -4. Scroll to **Display values**. -5. Select "Use foreign key" from the dropdown menu. -6. Select a column name from the second dropdown menu. +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: -### Displaying a column as a link +1. Set the [Semantic type](#semantic-type) to "Category". +2. Set [Filtering](#filtering) to "A list of all values". -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click on the **gear** icon at the right of a column's settings box. -4. Select **Formatting** from the sidebar. -5. From **Display as**, select **Link**. -6. Optional: set display text under **Link text**. -7. Enter the URL in the **Link URL** field. -8. Optional: create a dynamic URL by adding the column name as a `{% raw %}{{parameter}}{% endraw %}`. +When you change a default filter to a dropdown filter, you'll trigger a database query that gets the first 1,000 distinct values (ordered ascending) for that column. Metabase will cache the first 100kB of text to display in the dropdown menu. -![Format as URL](./images/format-as-url.png) +If you have columns with more than 1,000 distinct values, or columns with text-heavy data, we recommend setting **Filtering** to "Search box" instead. -For example, if you set the **Link URL** for an "Adjective" column to: +### Display values -``` -https://www.google.com/search?q={% raw %}{{adjective}}{% endraw %} -``` +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. -When someone clicks on the value "askew" in the "Adjective" column, they'll be taken to the Google search URL: +#### Mapping values to foreign keys -``` -https://www.google.com/search?q=askew -``` +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. -## Refresh or discard cached values +#### Mapping numbers to custom values -To update the values in your filter dropdown menus, refresh or reset the cached values. **Cache actions** include: +Say you have a column with values 1, 2, and 3. You could instead display "low", "medium", and "high". -- **Re-scan this table or field** to run a manual scan for new or updated column values. If possible, re-scan the table during off-peak hours, as [scans](../databases/sync-scan#how-database-scans-work) can slow down your database. -- **Discard cached field values** to clear cached values and stop them from showing up in your [filter widgets](#changing-the-filter-widget). +For this option to be available, you'll need to set the [filtering](#filtering) settings to "A list of all values". -### Table cache actions +Select "Custom mapping" from the dropdown menu. For each value in the column, enter a display value under **Mapped values**. -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click the **gear** icon at the top right (below **Exit admin**). -4. Select a cache action. +## Field formatting -### Column cache actions +_Admin settings > Table Metadata > Database > Table > Field_ -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click the **gear** icon at the right of a column's settings box. -4. Scroll to **Cached field values**. -5. Select a cache action. +See [Field formatting](./formatting#field-formatting). ## Unfold JSON -If Metabase supports JSON unfolding for your database, you can decide whether to unfold JSON into component fields, where each JSON key becomes a column. You can turn this off if performance is slow. - -1. Go to **Admin settings** > **Table Metadata**. -2. Find your database and table. -3. Click the **gear** icon at the right of a column's settings box. -4. Scroll to **Unfold JSON**. -5. Toggle JSON unfolding. +See [Working with JSON](./json-unfolding). ## Further reading diff --git a/_docs/master/data-modeling/models.md b/_docs/master/data-modeling/models.md index 2cc9d79652..91a39af8ba 100644 --- a/_docs/master/data-modeling/models.md +++ b/_docs/master/data-modeling/models.md @@ -92,7 +92,7 @@ For models based on SQL queries, you can tell Metabase if the column has the sam You can set the [column type][column-type]. The default is "No special type". -If your model is based on a SQL query and you want people to be able to explore the results with the query builder, you'll need to set the [column type](./field-types) for each column in your model. +If your model is based on a SQL query and you want people to be able to explore the results with the query builder, you'll need to set the [column type](./semantic-types) for each column in your model. ### This column should appear in... @@ -175,7 +175,7 @@ See [Model persistence](./model-persistence) - [Models in Metabase][learn-models] - [Troubleshooting models][troubleshooting-models]. -[column-type]: ./field-types +[column-type]: ./semantic-types [cte]: /learn/sql/working-with-sql/sql-cte [measures-dimensions]: /learn/grow-your-data-skills/data-fundamentals/dimensions-and-measures [question]: ../questions/start diff --git a/_docs/master/data-modeling/segments.md b/_docs/master/data-modeling/segments.md index 97cf6eed24..586e8350be 100644 --- a/_docs/master/data-modeling/segments.md +++ b/_docs/master/data-modeling/segments.md @@ -11,7 +11,14 @@ layout: new-docs # Segments -Metabase allows admins to create segments so people can quickly and easily reference them in the query builder. Just head over to the **Admin Panel** and select **Table Metadata** from the top menu. +Metabase allows admins to create segments so people can quickly and easily reference them in the query builder. + +To manage segments: + +1. Click the **gear** icon in the upper right. +2. Select **Admin setting**. +3. Go to the **Table Metadata** tab. +5. Click **Segments** at the bottom left. ## Creating a Segment diff --git a/_docs/master/data-modeling/field-types.md b/_docs/master/data-modeling/semantic-types.md similarity index 89% rename from _docs/master/data-modeling/field-types.md rename to _docs/master/data-modeling/semantic-types.md index 29a3103338..9e9d64e84d 100644 --- a/_docs/master/data-modeling/field-types.md +++ b/_docs/master/data-modeling/semantic-types.md @@ -4,15 +4,16 @@ has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true category: 'Data Modeling' -title: 'Data and field types' -source_url: 'https://github.com/metabase/metabase/blob/master/docs/data-modeling/field-types.md' +title: 'Data types and semantic types' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/data-modeling/semantic-types.md' layout: new-docs redirect_from: - /docs/master/users-guide/field-types + - /docs/master/data-modeling/field-types summary: 'Metabase uses both data and semantic types to understand how to format and visualize your data.' --- -# Data and field types +# Data types and semantic types Metabase distinguishes between two types of column metadata: data types and field types. @@ -42,7 +43,7 @@ For some fields, you can tell Metabase to [cast the field to a different data ty ## Semantic types -You can think of semantic types as adding extra flavor to a field to communicate meaning and enable [additional functionality](#what-data-and-semantic-types-enable). Available semantic types depend on the underlying data types. +You can think of semantic types as adding meaning and context to a field to communicate its purpose and enable [additional functionality](#what-data-and-semantic-types-enable). Available semantic types depend on the underlying data types. ### Semantic types for any field @@ -101,19 +102,19 @@ You can think of semantic types as adding extra flavor to a field to communicate ## Editing data and semantic types -Admins, and people with [permission to manage table metadata](../permissions/data#manage-table-metadata-permissions), can cast data types and edit semantic types in the Admin setting's Table Metadata tab. +Admins, and people with [permission to manage table metadata](../permissions/data#manage-table-metadata-permissions), can cast data types and edit semantic types in the Admin settings' Table Metadata tab. ### Cast data types -Data types can't be edited in Metabase directly, but you can cast certain [data types to different types](./metadata-editing#casting-to-a-specific-data-type) so that, for example, Metabase will interpret a text data type as a date type. +Data types can't be edited in Metabase directly, but you can cast certain [data types to different types](./metadata-editing#cast-to-a-specific-data-type) so that, for example, Metabase will interpret a text data type as a date type. -Changes made in Table Metadata apply across your entire Metabase. Metabase currently only supports casting to a datetime type in Metadata settings. However, if you you build a query in the query builder, in you can use type casting custom expressions like [`date()`](../questions/query-builder/expressions-list#date) or [`integer()`](../questions/query-builder/expressions-list#integer) to cast a string to a different type in your query. +Changes made in Table Metadata apply across your entire Metabase. Metabase currently only supports casting to a datetime type in Metadata settings. However, if you build a query in the query builder, you can use type casting custom expressions like [`date()`](../questions/query-builder/expressions-list#date) or [`integer()`](../questions/query-builder/expressions-list#integer) to cast a string to a different type in your query. ### Semantic types don't change the data types -You can pick a semantic type compatible with the underlying data type in [table metadata settings](./metadata-editing#field-type) +You can pick a semantic type compatible with the underlying data type in [table metadata settings](./metadata-editing#semantic-type). -Semantic types only add meaning; they should NOT be used for type casting. For example, if you set a text field's semantic type to "Quantity", Metabase will still treat the field as a text field. Instead, apply semantic types to tell Metabase how to format or visualize the field (like telling Metabase that a numeric values represents a percentage). +Semantic types only add meaning; they should not be used for type casting. For example, if you set a text field's semantic type to "Quantity", Metabase will still treat the field as a text field. Instead, apply semantic types to tell Metabase how to format or visualize the field (like telling Metabase that a numeric value represents a percentage). ## What data and semantic types enable @@ -121,11 +122,11 @@ Semantic types only add meaning; they should NOT be used for type casting. For e Some semantic types change the way the data in the field is displayed. -Formatting setting from Table Metadata settings will be applied across your Metabase, but people can change them for individual charts. +Formatting settings from Table Metadata settings will be applied across your Metabase, but people can change them for individual charts. | Semantic type | Format | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Percentage | Displayed as percentage, for example 0.75 will be displayed as 75\% | +| Percentage | Displayed as percentage, for example 0.75 will be displayed as 75% | | Currency | On charts and in detail view, the values are prepended by the currency symbol, e.g., `$134.65`. By default in the table view, the currency symbol is only displayed in the header, but you can change the metadata formatting settings to show the symbol for every row. | | Latitude/Longitude | Displayed as coordinates, e.g., `0.00000000° N` | | Email | Display as a `mailto` link | diff --git a/_docs/master/data-modeling/start.md b/_docs/master/data-modeling/start.md index f26b732b0c..8655f30c17 100644 --- a/_docs/master/data-modeling/start.md +++ b/_docs/master/data-modeling/start.md @@ -31,11 +31,11 @@ Create metrics to define the official way to calculate important numbers for you Guide people to the right data by adding display names, hiding outdated tables, configuring filter types, and more. -## [Field types](./field-types) +## [Field types](./semantic-types) Field types dictate how Metabase displays its data, as well as the column’s special functionality, if any. -## [Setting default formatting for your data](./field-types) +## [Setting default formatting for your data](./formatting) Define formatting and display defaults for numbers, currencies, datetimes, and more. diff --git a/_docs/master/databases/connecting.md b/_docs/master/databases/connecting.md index 63f7f9f36d..27d2ea90e2 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/databases/sync-scan.md b/_docs/master/databases/sync-scan.md index 960ab8983b..653b3d0f60 100644 --- a/_docs/master/databases/sync-scan.md +++ b/_docs/master/databases/sync-scan.md @@ -20,7 +20,7 @@ Metabase periodically runs different types of queries on your data warehouse to ## Initial sync, scan, and fingerprinting -When Metabase first connects to your database, it performs a [sync](#how-database-syncs-work) to determine the metadata of the columns in your tables and automatically assign each column a [semantic type](../data-modeling/field-types). +When Metabase first connects to your database, it performs a [sync](#how-database-syncs-work) to determine the metadata of the columns in your tables and automatically assign each column a [semantic type](../data-modeling/semantic-types). You can follow the progress of these queries from **Gear icon** >**Admin settings** > **Tools** > **Tasks** and filtering by the various sync tasks. @@ -57,7 +57,7 @@ Options include: - **Only when adding a new filter widget** is a great option if you want scan queries to run on demand. Turning this option **ON** means that Metabase will only scan and cache the values of the field(s) that are used when someone adds a new filter widget to a dashboard or SQL question (i.e., they add a parameter to their SQL query). - **Never, I'll do this manually if I need to** is an option for databases that are either prohibitively large or which never really have new values added. Use the [Re-scan field values](#manually-scanning-column-values) button to run a manual scan and bring your filter values up to date. -Regardless of which option you pick, if you [set a field to use a dropdown list in filter widgets](../data-modeling/metadata-editing#changing-the-filter-widget), Metabase will need to get values for that dropdown. Whenever someone uses that filter widget, Metabase will first look for cached values (valid for fourteen days) to populate that dropdown; otherwise, it will re-scan that field for the most up-to-date values. +Regardless of which option you pick, if you [set a field to use a dropdown list in filter widgets](../data-modeling/metadata-editing#filtering), Metabase will need to get values for that dropdown. Whenever someone uses that filter widget, Metabase will first look for cached values (valid for fourteen days) to populate that dropdown; otherwise, it will re-scan that field for the most up-to-date values. ## Manually syncing tables and columns diff --git a/_docs/master/embedding/interactive-embedding.md b/_docs/master/embedding/interactive-embedding.md index c16dd02ef8..e80ce4741e 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 acd7fdd4f7..dbc020d74d 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/upgrade.md b/_docs/master/embedding/sdk/upgrade.md new file mode 100644 index 0000000000..d906724b61 --- /dev/null +++ b/_docs/master/embedding/sdk/upgrade.md @@ -0,0 +1,83 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: 'Upgrading Metabase and the Embedded analytics SDK' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/upgrade.md' +layout: new-docs +summary: 'How to upgrade your Metabase and Embedded analytics SDK versions, test the changes, and check for breaking changes that might affect your app.' +--- + +# Upgrading Metabase and the Embedded analytics SDK + +Here's a basic overview of the steps you'll want to take when upgrading your SDK. + +## 1. Read the release post and changelog for both Metabase and the Embedded analytics SDK + +- [Release posts](/releases) give a good overview of what's in each release, and call out breaking changes (which are rare). +- [Metabase changelogs](/changelog) list Metabase changes. +- [Embedded analytics SDK changelogs](/changelog/55) list changes specific to the SDK package. + +Check for any relevant changes, especially breaking changes that require you to update your application's code. If there are breaking changes, we'll have docs that'll walk you through what changes you'll need to make and why. + +## 2. Test the upgrade + +When upgrading to a new major version, you'll want to upgrade both Metabase and the SDK version in parallel, as having Metabase and the SDK major versions out of sync can cause errors. + +### Spin up the new version of Metabase for testing + +You can do this locally or in a dev instance. If your testing setup involves a lot of test user accounts, getting a [development instance](../../installation-and-operation/development-instance) could be more cost-effective. + +See [upgrading Metabase](../../installation-and-operation/upgrading-metabase). + +### Upgrade the SDK with npm or yarn + +You'll want to test the changes locally first, as there may be breaking changes that require you to upgrade your application code. + +Check out a new branch in your application and install the next stable version, either with npm or yarn: + +Via npm: + +```bash +npm install @metabase/embedding-sdk-react@{next-major-version-number}-stable +``` + +For example, if you were upgrading to version 55 of the SDK: + +```bash +npm install @metabase/embedding-sdk-react@55-stable +``` + +If you're using yarn: + +```bash +yarn add @metabase/embedding-sdk-react@{next-major-version-number}-stable +``` + +See more on [SDK versions](./version). + +### If there are breaking changes, make the necessary changes to your application code + +Breaking changes are rare, but if you do need to make changes, we'll mention it in the release notes for the new major version and have docs that walk you through the changes. + +Update or add tests for any application code changes that you make. + +### Deploy to your staging environment + +Before deploying your app to your staging environment, make sure you've tested your app locally (manually, as well as running any automated tests). + +If all goes well with your local tests, deploy to your staging environment. Check that the Metabase embeds in your staging app are still working as expected, and perform any other testing you normally do with your application with respect to your embedded analytics. + +## 3. Deploy to production + +If everything is working in staging, you're ready to deploy to production. + +Be sure to deploy your application changes and upgrade your Metabase in parallel so that the SDK version and the Metabase version stay in sync. + +### If your instance is on Metabase Cloud, you'll need to request an upgrade + +If you're on Metabase Cloud, your instance version is pinned, so you'll need to request an upgrade by [contacting support](/help-premium). + +We'll coordinate with you so that your instance is upgraded when you deploy the changes to your application. diff --git a/_docs/master/embedding/sdk/version.md b/_docs/master/embedding/sdk/version.md index 9ab574b799..86f9533b65 100644 --- a/_docs/master/embedding/sdk/version.md +++ b/_docs/master/embedding/sdk/version.md @@ -15,35 +15,32 @@ layout: new-docs The SDK stable version tracks with the Metabase version. -So, for example, if you're on Metabase 53 (`0.53.x`, `1.53.x`), _any_ version 0.53.x of the @metabase/embedding-sdk-react npm package will be compatible. +So, for example, if you're on Metabase 55 (`0.55.x`, `1.55.x`), _any_ version 0.55.x of the @metabase/embedding-sdk-react npm package will be compatible. -To simplify things, we publish dist-tags for each stable Metabase version. For example, to install the latest version of the SDK compatible with Metabase 53, run: +To simplify things, we publish dist-tags for each stable Metabase version. For example, to install the latest version of the SDK compatible with Metabase 55, run: ```sh -npm install @metabase/embedding-sdk-react@53-stable +npm install @metabase/embedding-sdk-react@55-stable ``` To grab the latest version of the SDK that works with Metabase nightly builds, use the `canary` dist-tag. ## Minimum SDK version -52 is the minimum version supported for the Embedded analytics SDK. +Version 52 is the minimum version supported for the Embedded analytics SDK. -## Version pinning when using the SDK with Metabase Cloud +## Instances on Metabase Cloud will be pinned to a specific version -To pin your version of Metabase, go to **Admin settings > Settings > Embedding**. Go to the Embedded analytics SDK card and scroll to **Version pinning** and click **Request version pinning**. +By default, if you're running on Metabase Cloud and using the Embedded analytics SDK, we'll pin your version to avoid breaking changes. -## Version pinning requirements +Normally, Metabase Cloud upgrades your Metabase as new versions roll out so you don't have to deal with upgrades. But if you're using the SDK with Metabase Cloud, you'll want to upgrade manually to make sure your embeds don't break when you upgrade both your Metabase and your SDK version. -To pin a version of Metabase, you must: +### Manually pinning your instance version on Metabase Cloud -- Be on Metabase Cloud (obviously) -- Be on the Pro or Enterprise plans +To manually pin your version of Metabase: -## Why you'd want to pin your Metabase Cloud version +1. Go to **Admin settings > Settings > Embedding**. +2. Go to the Embedded analytics SDK card. +3. Scroll to **Version pinning** and click **Request version pinning**. -Normally, Metabase Cloud upgrades your Metabase as new versions roll out so that you don't have to deal with upgrades. - -But if you're using the SDK with Metabase Cloud, you'll want to upgrade manually to make sure your embeds don't break when you upgrade both your Metabase and your SDK version. - -To upgrade manually, you can pin your Metabase version so that it stays in sync with the SDK version you're using. That way you can choose when to upgrade your Metabase. +This will open a mailto link to our support team. diff --git a/_docs/master/installation-and-operation/upgrading-metabase.md b/_docs/master/installation-and-operation/upgrading-metabase.md index cdfe3f1e6a..805935487d 100644 --- a/_docs/master/installation-and-operation/upgrading-metabase.md +++ b/_docs/master/installation-and-operation/upgrading-metabase.md @@ -13,11 +13,15 @@ redirect_from: # Upgrading Metabase -This page covers how to upgrade to a new [Metabase release](https://github.com/metabase/metabase/releases). +This page covers how to upgrade to a new Metabase release. + +- [Announcement posts for major releases](https://www.) +- [Changelogs](/changelog). +- [Release notes on GitHub](https://github.com/metabase/metabase/releases). ## Upgrading Metabase Cloud -If you're on a [Metabase Cloud](/pricing/) plan, we'll upgrade your Metabase automatically with each new release; no action needed on your end. +If you're on a [Metabase Cloud](/pricing/) plan, we'll upgrade your Metabase automatically with each new release; no action needed on your end ([unless you're using the Embedded analytics SDK](#instances-using-the-embedded-analtyics-sdk-on-metabase-cloud-must-request-an-upgrade)). How soon we upgrade you depends on the type of release: @@ -26,6 +30,14 @@ How soon we upgrade you depends on the type of release: Cloud customers can request an early upgrade by emailing support at help@metabase.com. Include the URL of the Metabase you want us to upgrade. +### Instances using the Embedded analtyics SDK on Metabase Cloud must request an upgrade + +If you're using the [Embedded analytics SDK](../embedding/sdk/introduction) on Metabase Cloud, we pin your version so that it doesn't upgrade automatically, as you should test the changes before upgrading. + +To upgrade your Metabase, you'll need to request an upgrade by [contacting support](/help-premium). + +See our [upgrade guide for the Embedded analytics SDK](../embedding/sdk/upgrade). + ## Upgrading a self-hosted Metabase Here are the steps for upgrading to a new Metabase version (major or minor): diff --git a/_docs/master/permissions/impersonation.md b/_docs/master/permissions/impersonation.md index 0303d10667..034aef9963 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 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). +> 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). > 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/join-with-custom-expression.png b/_docs/master/questions/images/join-with-custom-expression.png deleted file mode 100644 index 713683583e..0000000000 Binary files a/_docs/master/questions/images/join-with-custom-expression.png and /dev/null differ diff --git a/_docs/master/questions/native-editor/writing-sql.md b/_docs/master/questions/native-editor/writing-sql.md index e1730755b2..fa19e2a2da 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/coalesce.md b/_docs/master/questions/query-builder/expressions/coalesce.md index 4e5b575c5a..60e966f06f 100644 --- a/_docs/master/questions/query-builder/expressions/coalesce.md +++ b/_docs/master/questions/query-builder/expressions/coalesce.md @@ -179,7 +179,7 @@ coalesce([Notes], [Comments] "No notes or comments.") - [Custom expressions tutorial][custom-expressions-learn] [case-to-coalesce]: ./case#coalesce -[cast-data-type]: ../../../data-modeling/metadata-editing#casting-to-a-specific-data-type +[cast-data-type]: ../../../data-modeling/metadata-editing#cast-to-a-specific-data-type [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 diff --git a/_docs/master/questions/query-builder/expressions/converttimezone.md b/_docs/master/questions/query-builder/expressions/converttimezone.md index e2b78bc001..24d1478c71 100644 --- a/_docs/master/questions/query-builder/expressions/converttimezone.md +++ b/_docs/master/questions/query-builder/expressions/converttimezone.md @@ -107,7 +107,7 @@ For more gory details, see [Limitations](#limitations). We use "timestamp" and "datetime" to talk about any temporal data type that's supported by Metabase. -If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#casting-to-a-specific-data-type) from the Table Metadata page. +If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#cast-to-a-specific-data-type) from the Table Metadata page. To use `convertTimezone` without running into errors or pesky undetectable mistakes, you should know that there are a few varieties of `timestamp` data types: @@ -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 34e0d49b2f..f6ed404aa1 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 a4ae78d148..fef76b5b36 100644 --- a/_docs/master/questions/query-builder/expressions/datetimeadd.md +++ b/_docs/master/questions/query-builder/expressions/datetimeadd.md @@ -92,7 +92,7 @@ case(between(now, [Opened On], [Finish By]), "Yes", "No") We use "timestamp" and "datetime" to talk about any temporal data type that's supported by Metabase. For more info about these data types in Metabase, see [Timezones](../../../configuring-metabase/timezones#data-types). -If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#casting-to-a-specific-data-type) from the Table Metadata page. +If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#cast-to-a-specific-data-type) from the Table Metadata page. ## Limitations @@ -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 6b5a628e0f..b1981a10c6 100644 --- a/_docs/master/questions/query-builder/expressions/datetimediff.md +++ b/_docs/master/questions/query-builder/expressions/datetimediff.md @@ -77,7 +77,7 @@ datetimeDiff([Aging Start], now, "day") We use "timestamp" and "datetime" to talk about any temporal data type that's supported by Metabase. For more info about these data types in Metabase, see [Timezones](../../../configuring-metabase/timezones#data-types). -If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#casting-to-a-specific-data-type) from the Table Metadata page. +If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#cast-to-a-specific-data-type) from the Table Metadata page. ## Limitations @@ -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 dae7f129e5..a5ae46dce0 100644 --- a/_docs/master/questions/query-builder/expressions/datetimesubtract.md +++ b/_docs/master/questions/query-builder/expressions/datetimesubtract.md @@ -92,7 +92,7 @@ case(between(now, [Depart At], [Arrive By]), "Yes", "No") We use "timestamp" and "datetime" to talk about any temporal data type that's supported by Metabase. For more info about these data types in Metabase, see [Timezones](../../../configuring-metabase/timezones#data-types). -If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#casting-to-a-specific-data-type) from the Table Metadata page. +If your timestamps are stored as strings or numbers in your database, an admin can [cast them to timestamps](../../../data-modeling/metadata-editing#cast-to-a-specific-data-type) from the Table Metadata page. ## Limitations @@ -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 6ef177a4d8..441bb9e8a9 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 2fc4c27cd9..b8702b3c24 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 dfabb5647c..af25882257 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 08a98f0056..51c3cd5d74 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 9ea8487df5..df1e647967 100644 --- a/_docs/master/questions/query-builder/join.md +++ b/_docs/master/questions/query-builder/join.md @@ -7,7 +7,6 @@ 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 --- @@ -18,26 +17,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 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 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. ![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 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. +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. -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. +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. 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 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. +**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. ## 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 "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 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. ![An A to B to C join](../images/join-a-b-c.png) @@ -60,42 +59,10 @@ 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] -- [Types of joins][join-types] +- [Type 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/visualizations/map.md b/_docs/master/questions/visualizations/map.md index 1f80030c8f..53cd2d0adc 100644 --- a/_docs/master/questions/visualizations/map.md +++ b/_docs/master/questions/visualizations/map.md @@ -45,7 +45,7 @@ To create a pin map: 1. Build a query with latitude and longitude columns for each data point (either in the query builder or using SQL); 2. Select **Visualization**, and pick **Map**; -3. If your query results have columns whose field type is set to latitude/longitude in [table metadata](../../data-modeling/metadata-editing#field-type), Metabase should build a pin map automatically. +3. If your query results have columns whose field type is set to latitude/longitude in [table metadata](../../data-modeling/metadata-editing#semantic-type), Metabase should build a pin map automatically. Otherwise, click on the **Gear** icon to go to visualization settings, choose **Map type: Pin map**, and pick columns that contain latitude and longitude coordinates. @@ -77,7 +77,7 @@ To create a grid map: 1. Build a query with summary by binned latitude and longitude columns (either in the query builder or using SQL); 2. Select **Visualization**, and pick **Map**; -3. If your query results have columns whose field type is set to latitude/longitude in [table metadata](../../data-modeling/metadata-editing#field-type), Metabase should build a grid map automatically. +3. If your query results have columns whose field type is set to latitude/longitude in [table metadata](../../data-modeling/metadata-editing#semantic-type), Metabase should build a grid map automatically. Otherwise, click on the **Gear** icon to go to visualization settings, choose **Map type: grid map**, and pick columns that contain latitude and longitude coordinates. @@ -129,7 +129,7 @@ To visualize your results in the format of a map of the world broken out by coun The country codes in the query results must match the two-letter codes exactly: if the country codes are lowercase or contain extra spaces, Metabase won't recognize them. -If your query result has columns with [semantic type](../../data-modeling/metadata-editing#field-type) "Country", Metabase should build a world map automatically. Otherwise, you can choose which columns to use as the country name in the **Region field** visualization setting. +If your query result has columns with [semantic type](../../data-modeling/metadata-editing#semantic-type) "Country", Metabase should build a world map automatically. Otherwise, you can choose which columns to use as the country name in the **Region field** visualization setting. You can connect the country column in the world region map to a "Location" type dashboard filter. @@ -144,7 +144,7 @@ Creating a map of the United States from your data requires your results to cont | Texas | 34 | | Illinois | 67 | -If your query result has columns with [semantic type](../../data-modeling/metadata-editing#field-type) "State", Metabase should build a US map automatically. Otherwise, you can choose which columns to use as the country name in the visualization settings. +If your query result has columns with [semantic type](../../data-modeling/metadata-editing#semantic-type) "State", Metabase should build a US map automatically. Otherwise, you can choose which columns to use as the country name in the visualization settings. You can connect the state column in the US region map to a "Location" type dashboard filter. diff --git a/_docs/master/questions/visualizations/table.md b/_docs/master/questions/visualizations/table.md index 935ee919f3..c6d8bcd48b 100644 --- a/_docs/master/questions/visualizations/table.md +++ b/_docs/master/questions/visualizations/table.md @@ -27,7 +27,7 @@ When viewing tables, you can click on the **gear** icon in the bottom left to br ![Adding or removing columns](../images/column-selection.png) -Admins (and people in groups with access to table metadata) can hide columns across your entire Metabase by marking them as hidden in the [table metadata settings](../../data-modeling/metadata-editing#column-visibility). +Admins (and people in groups with access to table metadata) can hide columns across your entire Metabase by marking them as hidden in the [table metadata settings](../../data-modeling/metadata-editing#field-visibility). > **Hiding columns should _not_ be used to secure sensitive information**. Hiding columns in table visualization settings only affects the visibility of the columns _in the visualization_, not in the query results. Even people with view-only permissions to the question will be able to change the visualization settings and unhide columns. To exclude a column from the results of a specific query, uncheck the column in the "Data" block of the query builder. diff --git a/_docs/master/troubleshooting-guide/filters.md b/_docs/master/troubleshooting-guide/filters.md index ffe3c11bdc..097e5c8cea 100644 --- a/_docs/master/troubleshooting-guide/filters.md +++ b/_docs/master/troubleshooting-guide/filters.md @@ -39,7 +39,7 @@ If a question filter is giving you no results or the wrong results: - asking your database admin. 3. Ask your Metabase admin to help you check if: - Metabase is [up to date](../databases/sync-scan) with your database, - - the column is [visible](../data-modeling/metadata-editing#column-visibility) in Metabase, + - the column is [visible](../data-modeling/metadata-editing#field-visibility) in Metabase, - you have the correct [data permissions](../permissions/data) to access the column. ### Special cases @@ -72,7 +72,7 @@ To debug dashboard and question filters that involve timestamps, UUIDs, or numer - the [Table Metadata page](../data-modeling/metadata-editing) (admins only), or - directly from the database. 2. Cast the column to a data type that matches the desired [filter type](../questions/query-builder/filters#filter-types). You can: - - [cast strings or numbers to dates](../data-modeling/metadata-editing#casting-to-a-specific-data-type) from the Table Metadata page, or + - [cast strings or numbers to dates](../data-modeling/metadata-editing#cast-to-a-specific-data-type) from the Table Metadata page, or - change the data type of the column in your database, and [re-sync](../databases/sync-scan#manually-syncing-tables-and-columns) the database schema. If you're not a Metabase admin, you might have to ask your admin to help you with some of these steps. diff --git a/_site/docs/master/api.html b/_site/docs/master/api.html index 1cdcfe3110..090c90c3e4 100644 --- a/_site/docs/master/api.html +++ b/_site/docs/master/api.html @@ -190,105 +190,6 @@ }, "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", @@ -374,126 +275,10 @@ "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", @@ -656,28 +441,6 @@ "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", @@ -702,38 +465,6 @@ "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" @@ -813,86 +544,6 @@ "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", @@ -962,97 +613,6 @@ "properties" : { } } ] }, - "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" : { @@ -1095,74 +655,6 @@ }, "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", @@ -1189,60 +681,6 @@ "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", @@ -1265,43 +703,6 @@ "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", @@ -1338,25 +739,6 @@ "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", @@ -1400,9 +782,6 @@ "properties" : { } } ] }, - "metabase-enterprise.metabot-v3.tools.api.proportion" : { - "type" : "number" - }, "metabase-enterprise.metabot-v3.tools.api.query-metric-arguments" : { "allOf" : [ { "type" : "object", @@ -1486,59 +865,6 @@ "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", @@ -1677,53 +1003,192 @@ }, "required" : [ "conversation_id" ] }, - "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" : { + "metabase.analyze.fingerprint.schema.Fingerprint" : { "type" : "object", "properties" : { + "experimental" : { + "type" : "object", + "properties" : { } + }, + "global" : { + "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.GlobalFingerprint" + }, "type" : { - "type" : "string", - "enum" : [ "nocache", "ttl", "duration", "schedule" ] + "$ref" : "#/components/schemas/metabase.analyze.fingerprint.schema.TypeSpecificFingerprint" } - }, - "required" : [ "type" ] - }, - "metabase.cache.api..cache-strategy.ee" : { - "description" : "Schema for a caching strategy in EE when we have an premium token with `:cache-granular-controls`.", - "allOf" : [ { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.base" - }, { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.nocache" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ttl" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.duration" - }, { - "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.schedule" - } ] - } ] + } }, - "metabase.cache.api..cache-strategy.ee.duration" : { + "metabase.analyze.fingerprint.schema.GlobalFingerprint" : { "type" : "object", "properties" : { - "duration" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "refresh_automatically" : { - "type" : "boolean" - }, - "type" : { - "const" : "duration" + "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" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "nocache", "ttl", "duration", "schedule" ] + } + }, + "required" : [ "type" ] + }, + "metabase.cache.api..cache-strategy.ee" : { + "description" : "Schema for a caching strategy in EE when we have an premium token with `:cache-granular-controls`.", + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.base" + }, { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.nocache" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ttl" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.duration" + }, { + "$ref" : "#/components/schemas/metabase.cache.api..cache-strategy.ee.schedule" + } ] + } ] + }, + "metabase.cache.api..cache-strategy.ee.duration" : { + "type" : "object", + "properties" : { + "duration" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "refresh_automatically" : { + "type" : "boolean" + }, + "type" : { + "const" : "duration" }, "unit" : { "type" : "string", @@ -1839,2470 +1304,82 @@ "properties" : { "path" : { "type" : "string" - }, - "recipient-type" : { - "enum" : [ "cc", "bcc", "cc", "bcc" ] - }, - "subject" : { - "type" : "string" - }, - "type" : { - "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] - } - }, - "required" : [ "type", "subject", "path" ] - }, { - "type" : "object", - "properties" : { - "body" : { - "type" : "string" - }, - "recipient-type" : { - "enum" : [ "cc", "bcc", "cc", "bcc" ] - }, - "subject" : { - "type" : "string" - }, - "type" : { - "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] - } - }, - "required" : [ "type", "subject", "body" ] - } ] - }, - "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.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" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.interval" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.NumericExpressionArg" - } ] - }, - "metabase.legacy-mbql.schema.Aggregation" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.aggregation-options" - }, { - "$ref" : "#/components/schemas/metabase.legacy-mbql.schema.UnnamedAggregation" - } ] - }, - "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.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" : [ { - "$ref" : "#/components/schemas/metabase.lib.schema.id.saved-questions-virtual-database" - }, { - "$ref" : "#/components/schemas/metabase.lib.schema.id.database" - } ] - }, - "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.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" : [ "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.legacy-mbql.schema.DateUnit" : { - "description" : "Valid unit for date bucketing.", - "type" : "string", - "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.legacy-mbql.schema.DatetimeDiffUnit" : { - "description" : "Valid units for a datetime-diff clause.", - "type" : "string", - "enum" : [ "second", "minute", "hour", "day", "week", "month", "quarter", "year" ] - }, - "metabase.legacy-mbql.schema.DatetimeExpression" : { - "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" + }, + "recipient-type" : { + "enum" : [ "cc", "bcc", "cc", "bcc" ] + }, + "subject" : { + "type" : "string" + }, + "type" : { + "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] + } }, - "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" + "required" : [ "type", "subject", "path" ] }, { - "$ref" : "#/components/schemas/metabase.lib.schema.parameter.variable" + "type" : "object", + "properties" : { + "body" : { + "type" : "string" + }, + "recipient-type" : { + "enum" : [ "cc", "bcc", "cc", "bcc" ] + }, + "subject" : { + "type" : "string" + }, + "type" : { + "enum" : [ "email/handlebars-resource", "email/handlebars-text", "email/handlebars-resource", "email/handlebars-text" ] + } + }, + "required" : [ "type", "subject", "body" ] } ] }, - "metabase.lib.schema.parameter.template-tag" : { - "type" : "array", - "prefixItems" : [ { - "const" : "template-tag" + "metabase.lib.schema.common.non-blank-string" : { + "type" : "string", + "minLength" : 1 + }, + "metabase.lib.schema.expression.temporal.timezone-id" : { + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" }, { - "oneOf" : [ { - "type" : "object", - "properties" : { - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" - } - }, - "required" : [ "id" ] + "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.common.non-blank-string" + "$ref" : "#/components/schemas/metabase.lib.schema.literal..string.zone-offset" } ] } ] }, - "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.id.card" : { + "type" : "integer", + "minimum" : 1 }, - "metabase.lib.schema.parameter.variable" : { - "type" : "array", - "prefixItems" : [ { - "const" : "variable" + "metabase.lib.schema.id.field" : { + "type" : "integer", + "minimum" : 1 + }, + "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})?)?$" }, { - "$ref" : "#/components/schemas/metabase.lib.schema.parameter.template-tag" + "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.parameter.widget-type" : { + "metabase.lib.schema.literal..string.zone-offset" : { "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/<=" ] + "pattern" : "(?:Z|(?:[+-]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,6})?)?))" }, - "metabase.lib.schema.template-tag..raw-value.type" : { + "metabase.lib.schema.metadata..column.has-field-values" : { "type" : "string", - "enum" : [ "date", "number", "boolean", "text" ] + "enum" : [ "auto-list", "list", "none", "search" ] }, "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" ] @@ -4375,69 +1452,7 @@ } }, "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", @@ -4507,72 +1522,7 @@ } }, "required" : [ "payload_type", "payload" ] - }, { - "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_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" ] - } ] + }, { } ] }, { "oneOf" : [ { "type" : "object", @@ -4629,64 +1579,10 @@ "items" : { "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" } - } - }, - "required" : [ "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" ] - } - }, - "subscriptions" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription" - } - } - } - } ] + } + }, + "required" : [ "payload" ] + }, { } ] } ] }, "metabase.notification.models.Notification" : { @@ -5002,16 +1898,6 @@ } } }, - "metabase.timeline.api.timeline.Timeline" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "id" ] - }, "metabase.timeline.api.timeline.include" : { "type" : "string", "enum" : [ "events" ] @@ -5071,18 +1957,6 @@ } }, "required" : [ "schedule_type" ] - }, - "metabot.reaction.redirect" : { - "type" : "object", - "properties" : { - "type" : { - "const" : "metabot.reaction/redirect" - }, - "url" : { - "type" : "string" - } - }, - "required" : [ "type", "url" ] } } }, @@ -5101,34 +1975,12 @@ }, "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" : { @@ -5233,17 +2085,6 @@ "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" ] } }, @@ -5261,17 +2102,6 @@ }, "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" : { @@ -5287,17 +2117,6 @@ }, "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" ] } }, @@ -5323,17 +2142,6 @@ }, "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" ] } }, @@ -5351,17 +2159,6 @@ }, "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" : { @@ -5481,17 +2278,6 @@ }, "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" : { @@ -5525,17 +2311,6 @@ }, "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" : { @@ -5551,17 +2326,6 @@ }, "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" ] } }, @@ -5570,17 +2334,6 @@ "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" ] } }, @@ -5589,17 +2342,6 @@ "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" ] } }, @@ -5608,17 +2350,6 @@ "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" ] } }, @@ -5646,34 +2377,12 @@ "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" : { @@ -5724,17 +2433,6 @@ }, "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" ] } }, @@ -5752,17 +2450,6 @@ }, "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" ] } }, @@ -5780,17 +2467,6 @@ }, "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" ] } }, @@ -5799,17 +2475,6 @@ "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" ] } }, @@ -5818,17 +2483,6 @@ "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" : { @@ -5856,17 +2510,6 @@ "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" ] } }, @@ -5875,17 +2518,6 @@ "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" ] } }, @@ -5903,17 +2535,6 @@ }, "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" : { @@ -5949,17 +2570,6 @@ }, "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" ] } }, @@ -5977,17 +2587,6 @@ }, "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" ] } }, @@ -6005,17 +2604,6 @@ }, "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" ] } }, @@ -6038,17 +2626,6 @@ "type" : "integer" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6077,17 +2654,6 @@ } ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6132,17 +2698,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6196,17 +2751,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6262,17 +2806,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6337,17 +2870,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6395,17 +2917,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6422,17 +2933,6 @@ "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" ] } }, @@ -6482,17 +2982,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6551,17 +3040,6 @@ }, "description" : "invalid show value" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/automagic-dashboards" ] } }, @@ -6570,17 +3048,6 @@ "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" ] } }, @@ -6589,17 +3056,6 @@ "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" : { @@ -6655,17 +3111,6 @@ }, "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" : { @@ -6689,17 +3134,6 @@ }, "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" ] } }, @@ -6708,17 +3142,6 @@ "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" ] } }, @@ -6727,17 +3150,6 @@ "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" ] } }, @@ -6777,34 +3189,12 @@ }, "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" : { @@ -6835,17 +3225,6 @@ "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" : { @@ -6925,17 +3304,6 @@ }, "description" : "A list of question ids" } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/cache" ] } }, @@ -6962,34 +3330,12 @@ }, "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" : { @@ -7079,17 +3425,6 @@ "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" : { @@ -7123,17 +3458,6 @@ "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" ] } }, @@ -7151,17 +3475,6 @@ }, "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" : { @@ -7184,17 +3497,6 @@ "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" ] } }, @@ -7228,17 +3530,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7264,17 +3555,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7292,17 +3572,6 @@ }, "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" : { @@ -7318,17 +3587,6 @@ }, "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" ] } }, @@ -7341,28 +3599,11 @@ "name" : "card-id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "requestBody" : { "content" : { "application/json" : { @@ -7411,17 +3652,6 @@ "$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" : { @@ -7461,16 +3691,10 @@ "name" : "id", "required" : true, "schema" : { - "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}$" - } ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { "in" : "query", "name" : "ignore_view", @@ -7487,17 +3711,6 @@ "enum" : [ "collection" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] }, "put" : { @@ -7520,17 +3733,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -7632,17 +3834,6 @@ }, "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" ] } }, @@ -7660,17 +3851,6 @@ }, "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" ] } }, @@ -7688,17 +3868,6 @@ }, "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" ] } }, @@ -7730,17 +3899,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7753,28 +3911,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/card" ] } }, @@ -7812,17 +3953,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/card" ] } }, @@ -7831,17 +3961,6 @@ "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" : { @@ -7870,17 +3989,6 @@ "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" : { @@ -7919,17 +4027,6 @@ "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" : { @@ -7951,17 +4048,6 @@ "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" : { @@ -8001,17 +4087,6 @@ "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" : { @@ -8048,17 +4123,6 @@ }, "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" : { @@ -8074,17 +4138,6 @@ }, "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" : { @@ -8122,34 +4175,12 @@ "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" ] } }, @@ -8158,17 +4189,6 @@ "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" ] } }, @@ -8209,34 +4229,12 @@ "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" : { @@ -8286,17 +4284,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] }, "put" : { @@ -8319,17 +4306,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -8370,17 +4346,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8389,24 +4354,6 @@ "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" ] } }, @@ -8488,17 +4435,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8507,24 +4443,6 @@ "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" : { @@ -8554,17 +4472,6 @@ "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" ] } }, @@ -8614,17 +4521,6 @@ }, "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" ] } }, @@ -8637,28 +4533,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/collection" ] }, "put" : { @@ -8674,17 +4553,6 @@ }, "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" : { @@ -8735,24 +4603,6 @@ }, "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" ] } }, @@ -8765,16 +4615,10 @@ "name" : "id", "required" : true, "schema" : { - "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}$" - } ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { "in" : "query", "name" : "models", @@ -8842,17 +4686,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/collection" ] } }, @@ -8870,24 +4703,6 @@ }, "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" : { @@ -8925,34 +4740,12 @@ "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" : { @@ -9001,17 +4794,6 @@ "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" ] } }, @@ -9044,17 +4826,6 @@ } } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -9090,17 +4861,6 @@ }, "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" : { @@ -9139,17 +4899,6 @@ "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" ] } }, @@ -9158,17 +4907,6 @@ "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" ] } }, @@ -9186,17 +4924,6 @@ }, "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" ] } }, @@ -9232,17 +4959,6 @@ }, "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" : { @@ -9319,17 +5035,6 @@ "$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" : { @@ -9408,17 +5113,6 @@ }, "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" : { @@ -9443,17 +5137,6 @@ }, "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" : { @@ -9486,17 +5169,6 @@ }, "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" : { @@ -9512,17 +5184,6 @@ }, "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" ] } }, @@ -9540,17 +5201,6 @@ }, "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" : { @@ -9596,28 +5246,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/dashboard" ] }, "delete" : { @@ -9633,17 +5266,6 @@ }, "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" : { @@ -9659,17 +5281,6 @@ }, "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" : { @@ -9836,17 +5447,6 @@ }, "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" : { @@ -9954,17 +5554,6 @@ }, "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" ] } }, @@ -9996,17 +5585,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -10032,17 +5610,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/dashboard" ] } }, @@ -10060,17 +5627,6 @@ }, "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" ] } }, @@ -10083,28 +5639,11 @@ "name" : "id", "required" : true, "schema" : { - "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" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, + "description" : "value must be an integer greater than zero." + } ], "tags" : [ "/api/dashboard" ] } }, @@ -10122,17 +5661,6 @@ }, "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" ] } }, @@ -10198,34 +5726,12 @@ }, "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" : { @@ -10284,17 +5790,6 @@ "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" ] } }, @@ -10303,17 +5798,6 @@ "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" : { @@ -10380,17 +5864,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] }, "put" : { @@ -10406,17 +5879,6 @@ }, "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" : { @@ -10485,17 +5947,6 @@ }, "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" ] } }, @@ -10529,17 +5980,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10572,17 +6012,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10600,17 +6029,6 @@ }, "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" ] } }, @@ -10628,17 +6046,6 @@ }, "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" ] } }, @@ -10656,17 +6063,6 @@ }, "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" ] } }, @@ -10684,17 +6080,6 @@ }, "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" ] } }, @@ -10712,17 +6097,6 @@ }, "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" ] } }, @@ -10772,17 +6146,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10800,17 +6163,6 @@ }, "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" ] } }, @@ -10844,17 +6196,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10888,17 +6229,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10932,17 +6262,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/database" ] } }, @@ -10960,17 +6279,6 @@ }, "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" ] } }, @@ -10988,17 +6296,6 @@ }, "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" ] } }, @@ -11016,17 +6313,6 @@ }, "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" ] } }, @@ -11035,17 +6321,6 @@ "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" ] } }, @@ -11054,17 +6329,6 @@ "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" ] } }, @@ -11073,17 +6337,6 @@ "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" ] } }, @@ -11092,17 +6345,6 @@ "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" ] } }, @@ -11111,17 +6353,6 @@ "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" ] } }, @@ -11130,17 +6361,6 @@ "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" : { @@ -11163,17 +6383,6 @@ "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" : { @@ -11203,17 +6412,6 @@ "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" : { @@ -11252,17 +6450,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -11292,17 +6479,6 @@ "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" : { @@ -11332,17 +6508,6 @@ "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" : { @@ -11368,17 +6533,6 @@ "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" : { @@ -11411,17 +6565,6 @@ "$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" : { @@ -11459,17 +6602,6 @@ "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" : { @@ -11492,17 +6624,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -11539,17 +6660,6 @@ }, "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" ] } }, @@ -11567,17 +6677,6 @@ }, "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" ] } }, @@ -11586,17 +6685,6 @@ "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" : { @@ -11644,17 +6732,6 @@ "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" : { @@ -11689,17 +6766,6 @@ "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" : { @@ -11729,17 +6795,6 @@ "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" ] } }, @@ -11757,17 +6812,6 @@ }, "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" ] } }, @@ -11776,17 +6820,6 @@ "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" : { @@ -11867,17 +6900,6 @@ }, "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" ] } }, @@ -11886,17 +6908,6 @@ "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" ] } }, @@ -11905,17 +6916,6 @@ "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" ] } }, @@ -11931,17 +6931,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/content-translation" ] } }, @@ -11950,17 +6939,6 @@ "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" : { @@ -11986,60 +6964,6 @@ "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", @@ -12052,17 +6976,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -12115,17 +7028,6 @@ }, "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" : { @@ -12144,111 +7046,11 @@ "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" : { @@ -12271,41 +7073,12 @@ "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" ] } }, @@ -12314,17 +7087,6 @@ "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" ] } }, @@ -12333,30 +7095,6 @@ "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" ] } }, @@ -12374,17 +7112,6 @@ }, "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" ] } }, @@ -12393,32 +7120,6 @@ "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" : { @@ -12447,35 +7148,6 @@ "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" : { @@ -12504,32 +7176,6 @@ "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" : { @@ -12558,32 +7204,6 @@ "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" : { @@ -12612,32 +7232,6 @@ "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" : { @@ -12672,32 +7266,6 @@ "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" : { @@ -12710,57 +7278,22 @@ "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" : [ "arguments", "conversation_id" ] - } - } - } - }, - "tags" : [ "/api/ee/metabot-tools" ] - } - }, - "/api/ee/metabot-tools/generate-insights" : { - "post" : { - "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" ] - } + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + } + }, + "required" : [ "arguments", "conversation_id" ] } } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" } }, + "tags" : [ "/api/ee/metabot-tools" ] + } + }, + "/api/ee/metabot-tools/generate-insights" : { + "post" : { + "summary" : "POST /api/ee/metabot-tools/generate-insights", + "description" : "Generate insights.", + "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { @@ -12789,32 +7322,6 @@ "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" : { @@ -12832,32 +7339,6 @@ "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" : { @@ -12892,32 +7373,6 @@ "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" : { @@ -12946,32 +7401,6 @@ "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" : { @@ -13007,32 +7436,6 @@ "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" : { @@ -13061,32 +7464,6 @@ "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" : { @@ -13115,32 +7492,6 @@ "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" : { @@ -13169,32 +7520,6 @@ "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" : { @@ -13223,17 +7548,6 @@ "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" ] } }, @@ -13250,17 +7564,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13277,17 +7580,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "put" : { @@ -13302,17 +7594,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -13374,17 +7655,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13424,17 +7694,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] }, "delete" : { @@ -13449,17 +7708,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13476,17 +7724,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13511,17 +7748,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/metabot-v3/metabot" ] } }, @@ -13530,17 +7756,6 @@ "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" : { @@ -13583,17 +7798,6 @@ "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" : { @@ -13631,39 +7835,48 @@ "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" ] } }, @@ -13698,34 +7911,12 @@ "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" : { @@ -13786,34 +7977,12 @@ "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" : { @@ -13872,17 +8041,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/scim/v2" ] } }, @@ -13917,34 +8075,12 @@ "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" : { @@ -14048,34 +8184,12 @@ "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" : { @@ -14177,17 +8291,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -14321,17 +8424,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/serialization" ] } }, @@ -14356,17 +8448,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "multipart/form-data" : { @@ -14451,17 +8532,6 @@ "enum" : [ "asc", "desc" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/ee/stale" ] } }, @@ -14470,17 +8540,6 @@ "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" ] } }, @@ -14505,18 +8564,7 @@ "type" : "boolean", "default" : false } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, + } ], "tags" : [ "/api/ee/upload-management" ] } }, @@ -14525,17 +8573,6 @@ "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" : { @@ -14560,59 +8597,12 @@ "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" : { - "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" - } ] - } - } + "properties" : { } } } } @@ -14623,17 +8613,6 @@ "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" ] } }, @@ -14642,17 +8621,6 @@ "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" ] } }, @@ -14668,17 +8636,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14708,17 +8665,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14727,17 +8673,6 @@ "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" ] } }, @@ -14760,17 +8695,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14786,17 +8710,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14835,17 +8748,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14861,17 +8763,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14905,17 +8796,6 @@ }, "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" ] } }, @@ -14965,17 +8845,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -14984,17 +8853,6 @@ "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" ] } }, @@ -15003,17 +8861,6 @@ "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" ] } }, @@ -15036,17 +8883,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -15062,17 +8898,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/embed" ] } }, @@ -15106,17 +8931,6 @@ }, "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" ] } }, @@ -15178,17 +8992,6 @@ }, "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" ] } }, @@ -15268,17 +9071,6 @@ }, "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" ] } }, @@ -15304,17 +9096,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] }, "put" : { @@ -15330,17 +9111,6 @@ }, "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" : { @@ -15418,17 +9188,6 @@ }, "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" : { @@ -15469,17 +9228,6 @@ }, "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" ] } }, @@ -15497,17 +9245,6 @@ }, "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" ] } }, @@ -15525,17 +9262,6 @@ }, "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" ] } }, @@ -15570,17 +9296,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] } }, @@ -15598,17 +9313,6 @@ }, "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" ] } }, @@ -15643,17 +9347,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/field" ] } }, @@ -15671,17 +9364,6 @@ }, "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" ] } }, @@ -15699,17 +9381,6 @@ }, "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" : { @@ -15725,17 +9396,6 @@ }, "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" : { @@ -15779,17 +9439,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/geojson" ] } }, @@ -15806,17 +9455,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/geojson" ] } }, @@ -15825,17 +9463,6 @@ "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" : { @@ -15864,17 +9491,6 @@ "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" : { @@ -15907,17 +9523,6 @@ "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" : { @@ -15943,17 +9548,6 @@ "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" ] } }, @@ -15962,17 +9556,6 @@ "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" ] } }, @@ -15981,51 +9564,6 @@ "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" ] } }, @@ -16034,17 +9572,6 @@ "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" ] } }, @@ -16053,17 +9580,6 @@ "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" : { @@ -16098,17 +9614,6 @@ }, "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" ] } }, @@ -16126,17 +9631,6 @@ }, "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" : { @@ -16152,17 +9646,6 @@ }, "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" ] } }, @@ -16171,17 +9654,6 @@ "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" : { @@ -16235,34 +9707,12 @@ }, "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" : { @@ -16299,17 +9749,6 @@ "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" : { @@ -16349,17 +9788,6 @@ }, "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" : { @@ -16374,18 +9802,7 @@ "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" - } - }, + } ], "requestBody" : { "content" : { "application/json" : { @@ -16418,17 +9835,6 @@ }, "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" ] } }, @@ -16437,17 +9843,6 @@ "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" ] } }, @@ -16465,17 +9860,6 @@ }, "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" : { @@ -16508,34 +9892,12 @@ "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" : { @@ -16579,17 +9941,6 @@ }, "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" : { @@ -16605,17 +9956,6 @@ }, "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" : { @@ -16703,34 +10043,12 @@ "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" : { @@ -16748,17 +10066,6 @@ "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" : { @@ -16776,17 +10083,6 @@ "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" : { @@ -16818,17 +10114,6 @@ "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" : { @@ -16869,17 +10154,6 @@ }, "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" : { @@ -16895,17 +10169,6 @@ }, "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" : { @@ -16932,17 +10195,6 @@ }, "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" : { @@ -16979,17 +10231,6 @@ }, "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" ] } }, @@ -16998,17 +10239,6 @@ "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" : { @@ -17049,17 +10279,6 @@ }, "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" : { @@ -17101,17 +10320,6 @@ }, "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" : { @@ -17140,17 +10348,6 @@ "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" : { @@ -17173,17 +10370,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -17211,17 +10397,6 @@ }, "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" ] } }, @@ -17239,17 +10414,6 @@ }, "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" ] } }, @@ -17258,34 +10422,12 @@ "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" : { @@ -17319,17 +10461,6 @@ }, "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" : { @@ -17361,17 +10492,6 @@ }, "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" ] } }, @@ -17389,17 +10509,6 @@ }, "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" ] } }, @@ -17408,34 +10517,12 @@ "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" : { @@ -17479,17 +10566,6 @@ }, "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" ] } }, @@ -17507,17 +10583,6 @@ }, "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" : { @@ -17548,17 +10613,6 @@ }, "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" ] } }, @@ -17567,17 +10621,6 @@ "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" ] } }, @@ -17595,17 +10638,6 @@ }, "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" ] } }, @@ -17623,17 +10655,6 @@ }, "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" ] } }, @@ -17651,17 +10672,6 @@ }, "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" ] } }, @@ -17679,17 +10689,6 @@ }, "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" ] } }, @@ -17707,17 +10706,6 @@ }, "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" ] } }, @@ -17735,17 +10723,6 @@ }, "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" ] } }, @@ -17754,17 +10731,6 @@ "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" ] } }, @@ -17773,17 +10739,6 @@ "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" ] } }, @@ -17792,17 +10747,6 @@ "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" : { @@ -17837,17 +10781,6 @@ }, "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" ] } }, @@ -17856,17 +10789,6 @@ "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" ] } }, @@ -17883,17 +10805,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17923,17 +10834,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17950,17 +10850,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -17977,17 +10866,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -18022,17 +10900,6 @@ }, "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" ] } }, @@ -18041,17 +10908,6 @@ "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" ] } }, @@ -18060,17 +10916,6 @@ "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" ] } }, @@ -18087,17 +10932,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/preview_embed" ] } }, @@ -18132,17 +10966,6 @@ }, "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" ] } }, @@ -18151,17 +10974,6 @@ "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" : { @@ -18203,17 +11015,6 @@ }, "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" ] } }, @@ -18231,17 +11032,6 @@ }, "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" : { @@ -18274,17 +11064,6 @@ }, "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" ] } }, @@ -18315,17 +11094,6 @@ "required" : true, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18359,17 +11127,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18395,17 +11152,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18431,17 +11177,6 @@ }, "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" ] } }, @@ -18487,20 +11222,9 @@ "required" : false, "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" - } - }, + }, + "description" : "value must be a valid JSON string." + } ], "tags" : [ "/api/public" ] } }, @@ -18518,17 +11242,6 @@ }, "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" ] } }, @@ -18572,17 +11285,6 @@ }, "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" ] } }, @@ -18625,17 +11327,6 @@ "$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" : { @@ -18697,17 +11388,6 @@ }, "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" : { @@ -18732,17 +11412,6 @@ }, "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" : { @@ -18788,17 +11457,6 @@ "required" : true, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18832,17 +11490,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18868,17 +11515,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18922,17 +11558,6 @@ "minimum" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/public" ] } }, @@ -18958,17 +11583,6 @@ }, "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" ] } }, @@ -19012,17 +11626,6 @@ }, "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" ] } }, @@ -19086,17 +11689,6 @@ }, "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" ] } }, @@ -19178,17 +11770,6 @@ }, "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" ] } }, @@ -19222,34 +11803,12 @@ "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" : { @@ -19302,17 +11861,6 @@ "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" ] } }, @@ -19330,17 +11878,6 @@ }, "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" ] } }, @@ -19358,17 +11895,6 @@ }, "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" ] } }, @@ -19386,17 +11912,6 @@ }, "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" ] } }, @@ -19414,17 +11929,6 @@ }, "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" ] } }, @@ -19433,17 +11937,6 @@ "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" : { @@ -19489,17 +11982,6 @@ "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" : { @@ -19531,17 +12013,6 @@ "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" : { @@ -19582,17 +12053,6 @@ }, "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" : { @@ -19608,17 +12068,6 @@ }, "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" : { @@ -19675,17 +12124,6 @@ }, "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" ] } }, @@ -19711,17 +12149,6 @@ "enum" : [ "card", "dashboard", "segment" ] } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/revision" ] } }, @@ -19730,17 +12157,6 @@ "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" : { @@ -19792,24 +12208,13 @@ }, "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 - `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.", + "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.", "parameters" : [ { "in" : "query", "name" : "q", @@ -19881,24 +12286,6 @@ "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", @@ -19984,17 +12371,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] } }, @@ -20003,17 +12379,6 @@ "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" ] } }, @@ -20022,17 +12387,6 @@ "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" ] } }, @@ -20054,17 +12408,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] }, "put" : { @@ -20084,17 +12427,6 @@ "required" : false, "schema" : { } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/search" ] } }, @@ -20103,17 +12435,6 @@ "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" : { @@ -20149,17 +12470,6 @@ "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" ] } }, @@ -20177,17 +12487,6 @@ }, "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" : { @@ -20203,17 +12502,6 @@ }, "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" : { @@ -20276,17 +12564,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/segment" ] } }, @@ -20304,17 +12581,6 @@ }, "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" ] } }, @@ -20323,17 +12589,6 @@ "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" : { @@ -20360,17 +12615,6 @@ "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" ] } }, @@ -20379,17 +12623,6 @@ "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" : { @@ -20414,17 +12647,6 @@ "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" : { @@ -20449,17 +12671,6 @@ "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" : { @@ -20492,17 +12703,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/session" ] } }, @@ -20511,17 +12711,6 @@ "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" ] } }, @@ -20530,17 +12719,6 @@ "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" : { @@ -20569,34 +12747,12 @@ "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" : { @@ -20622,17 +12778,6 @@ "type" : "string" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/setting" ] }, "put" : { @@ -20646,30 +12791,6 @@ "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" ] } }, @@ -20678,17 +12799,6 @@ "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" : { @@ -20768,17 +12878,6 @@ "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" ] } }, @@ -20787,17 +12886,6 @@ "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" : { @@ -20819,19 +12907,8 @@ "/api/slack/manifest" : { "get" : { "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" - } - }, + "description" : "Returns the YAML manifest file that should be used to bootstrap new Slack apps", + "parameters" : [ ], "tags" : [ "/api/slack" ] } }, @@ -20840,17 +12917,6 @@ "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" : { @@ -20877,34 +12943,12 @@ "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" : { @@ -20965,17 +13009,6 @@ }, "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" ] } }, @@ -20993,17 +13026,6 @@ }, "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" ] } }, @@ -21028,17 +13050,6 @@ "type" : "boolean" } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/table" ] }, "put" : { @@ -21054,17 +13065,6 @@ }, "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" : { @@ -21120,17 +13120,6 @@ }, "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" : { @@ -21170,17 +13159,6 @@ }, "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" ] } }, @@ -21198,30 +13176,6 @@ }, "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" : { @@ -21253,17 +13207,6 @@ }, "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" ] } }, @@ -21305,17 +13248,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/table" ] } }, @@ -21333,17 +13265,6 @@ }, "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" ] } }, @@ -21361,17 +13282,6 @@ }, "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" : { @@ -21384,418 +13294,109 @@ "filename" : { "type" : "string" }, - "tempfile" : { } - }, - "required" : [ "filename", "tempfile" ] - } - }, - "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" + "tempfile" : { } + }, + "required" : [ "filename", "tempfile" ] } }, - "required" : [ "id", "model" ] + "required" : [ "file" ] } } } }, - "tags" : [ "/api/testing" ] - } - }, - "/api/testing/refresh-caches" : { - "post" : { - "summary" : "POST /api/testing/refresh-caches", - "description" : "Manually triggers the cache refresh task, if Enterprise code is available.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "tags" : [ "/api/table" ] } }, - "/api/testing/restore/{name}" : { + "/api/table/{id}/rescan_values" : { "post" : { - "summary" : "POST /api/testing/restore/{name}", - "description" : "Restore a database snapshot for testing purposes.", + "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" : "name", + "name" : "id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/set-time" : { + "/api/table/{id}/sync_schema" : { "post" : { - "summary" : "POST /api/testing/set-time", - "description" : "Make java-time see world at exact time.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "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 }, - "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" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/snapshot/{name}" : { - "post" : { - "summary" : "POST /api/testing/snapshot/{name}", - "description" : "Snapshot the database for testing purposes.", + "/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" : "name", + "name" : "table-id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/table" ] } }, - "/api/testing/stats" : { - "post" : { - "summary" : "POST /api/testing/stats", - "description" : "Triggers a send of instance usage stats", + "/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" + "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" ] + } + }, + "/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" : [ ], + "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 }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/testing" ] + "description" : "value must be an integer greater than zero." + } ], + "tags" : [ "/api/task" ] } }, "/api/tiles/{card-id}/{zoom}/{x}/{y}/{lat-field}/{lon-field}" : { @@ -21858,17 +13459,6 @@ }, "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" ] } }, @@ -21950,17 +13540,6 @@ }, "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" ] } }, @@ -21977,17 +13556,6 @@ }, "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" ] } }, @@ -21996,17 +13564,6 @@ "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" : { @@ -22074,17 +13631,6 @@ }, "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" : { @@ -22100,17 +13646,6 @@ }, "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" : { @@ -22166,17 +13701,6 @@ }, "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" ] } }, @@ -22185,24 +13709,6 @@ "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" : { @@ -22258,27 +13764,6 @@ "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" ] } }, @@ -22302,17 +13787,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/timeline" ] } }, @@ -22345,17 +13819,6 @@ "default" : false } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/timeline" ] } }, @@ -22404,24 +13867,6 @@ }, "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" : { @@ -22437,17 +13882,6 @@ }, "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" : { @@ -22496,17 +13930,6 @@ }, "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" ] } }, @@ -22515,17 +13938,6 @@ "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" : { @@ -22568,17 +13980,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "tags" : [ "/api/user-key-value" ] } }, @@ -22603,17 +14004,6 @@ "minLength" : 1 } } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, "requestBody" : { "content" : { "application/json" : { @@ -22651,34 +14041,12 @@ "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" ] } }, @@ -22718,34 +14086,12 @@ "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" : { @@ -22789,17 +14135,6 @@ "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" ] } }, @@ -22808,17 +14143,6 @@ "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" ] } }, @@ -22836,17 +14160,6 @@ }, "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" : { @@ -22862,17 +14175,6 @@ }, "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" : { @@ -22933,17 +14235,6 @@ }, "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" ] } }, @@ -22961,17 +14252,6 @@ }, "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" ] } }, @@ -22989,17 +14269,6 @@ }, "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" : { @@ -23033,17 +14302,6 @@ }, "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" ] } }, @@ -23052,17 +14310,6 @@ "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 c60076dbc5..e7c10b1a90 100644 --- a/_site/docs/master/configuring-metabase/appearance.html +++ b/_site/docs/master/configuring-metabase/appearance.html @@ -4895,7 +4895,7 @@

Further reading

diff --git a/_site/docs/master/configuring-metabase/setting-up-metabase.html b/_site/docs/master/configuring-metabase/setting-up-metabase.html index e77bb3d6d2..c29a929fe0 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:

diff --git a/_site/docs/master/data-modeling/field-types.html b/_site/docs/master/data-modeling/field-types.html index 6ac9819b4a..ca5b4dfc32 100644 --- a/_site/docs/master/data-modeling/field-types.html +++ b/_site/docs/master/data-modeling/field-types.html @@ -1,5432 +1,10 @@ - - - - - - - - - - - - - - - - - - -Data and field types | Metabase Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
-
- - - -
-
-
- -
- - - - - - - - - -
- - - -
- - -
- -
- -
- - - -
- - - master - - - - - - - - -
- - - - - What’s new - - - - - -
- - - - -
-
- - -
- - -
- - -
- These are the docs for the Metabase master branch. Some features documented here may not yet be available in the latest release. - Check out the docs for the latest version, Metabase v0.55. -
- - -
- - -

Data and field types

- -

Metabase distinguishes between two types of column metadata: data types and field types.

- -
    -
  • Data types are the underlying column type as defined in your database, like Date or Text. Metabase reads the data types during the database sync process.
  • -
  • Semantic types, also called field types, are labels that describe how the data should be interpreted. For example, if you have a column with a data type of Text that you use to store emails, you can add a semantic type of Email to let people (and Metabase) know what kind of text the column stores.
  • -
- -

Data and semantic types determine how Metabase formats the data, which charts are available, how the filters work, and other functionality.

- -

Data types

- -

Data types are the underlying column types as defined in your database. Metabase reads the data types during the database sync process. Because Metabase connects to many different databases, it uses its own type hierarchy under the hood, so that it can, for example, handle date fields in databases as different as PostgreSQL and MongoDB.

- -

The main data types in Metabase:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Data TypeExample database types
NumericINTEGER, FLOAT
TemporalDATE, TIMESTAMP
TextVARCHAR, TEXT
Text-likeMongoDB BSONID, Postgres Enum
BooleanBoolean
CollectionJSON, BigQuery RECORD, MongoDB Object
- -

Metabase currently doesn’t support array types. On columns containing arrays, you’ll only be able to filter by Is empty or Is not empty.

- -

For some fields, you can tell Metabase to cast the field to a different data type (for example, changing a text type to a date type).

- -

Semantic types

- -

You can think of semantic types as adding extra flavor to a field to communicate meaning and enable additional functionality. Available semantic types depend on the underlying data types.

- -

Semantic types for any field

- -
    -
  • -

    Entity key. Used to indicate that the field uniquely identifies each row. Could be a Product ID, serial number, etc.

    -
  • -
  • -

    Foreign key. Used to refer to an Entity key of another table in order to connect data from different tables that are related. For example, in a Products table, you might have a Customer ID field that points to a Customers table, where Customer ID is the Entity key. If you want to use linked filters on dashboards, you must set up foreign key relationships.

    -
  • -
- -

Semantic types for numeric fields

- -
    -
  • Quantity
  • -
  • Score
  • -
  • Percentage
  • -
  • Financial -
      -
    • Currency
    • -
    • Discount
    • -
    • Income
    • -
    -
  • -
  • Location -
      -
    • Latitude
    • -
    • Longitude
    • -
    -
  • -
  • Category
  • -
- -

Semantic types for temporal fields

- -
    -
  • Creation date
  • -
  • Creation time
  • -
  • Creation timestamp
  • -
  • Joined date
  • -
  • Joined time
  • -
  • Joined timestamp
  • -
  • Birthday
  • -
- -

Semantic types for text fields

- -
    -
  • Entity name
  • -
  • Email -
      -
    • URL
    • -
    • Image URL
    • -
    • Avatar URL
    • -
    -
  • -
  • Category
  • -
  • Name
  • -
  • Title
  • -
  • Description
  • -
  • Product
  • -
  • Source
  • -
  • Location -
      -
    • City
    • -
    • State
    • -
    • Country
    • -
    • ZipCode
    • -
    -
  • -
- -

Semantic types for collection fields

- - - -

Editing data and semantic types

- -

Admins, and people with permission to manage table metadata, can cast data types and edit semantic types in the Admin setting’s Table Metadata tab.

- -

Cast data types

- -

Data types can’t be edited in Metabase directly, but you can cast certain data types to different types so that, for example, Metabase will interpret a text data type as a date type.

- -

Changes made in Table Metadata apply across your entire Metabase. Metabase currently only supports casting to a datetime type in Metadata settings. However, if you you build a query in the query builder, in you can use type casting custom expressions like date() or integer() to cast a string to a different type in your query.

- -

Semantic types don’t change the data types

- -

You can pick a semantic type compatible with the underlying data type in table metadata settings

- -

Semantic types only add meaning; they should NOT be used for type casting. For example, if you set a text field’s semantic type to “Quantity”, Metabase will still treat the field as a text field. Instead, apply semantic types to tell Metabase how to format or visualize the field (like telling Metabase that a numeric values represents a percentage).

- -

What data and semantic types enable

- -

Display format

- -

Some semantic types change the way the data in the field is displayed.

- -

Formatting setting from Table Metadata settings will be applied across your Metabase, but people can change them for individual charts.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Semantic typeFormat
PercentageDisplayed as percentage, for example 0.75 will be displayed as 75\%
CurrencyOn charts and in detail view, the values are prepended by the currency symbol, e.g., $134.65. By default in the table view, the currency symbol is only displayed in the header, but you can change the metadata formatting settings to show the symbol for every row.
Latitude/LongitudeDisplayed as coordinates, e.g., 0.00000000° N
EmailDisplay as a mailto link
URLCan format as a clickable link
Image URLCan display as an image. See table format settings
Avatar URLCan display as avatar circle image. See table format settings
Field containing JSONIn detail view, display as prettified JSON
Entity and Foreign keyHighlighted in table view
- -

Visualizations

- -

When you create a question in the query builder, Metabase will automatically choose the most suitable chart for you based on the data types and the semantic types of the field in the “Group by” step (you can change the chart type later).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Group by data typeAutomatic chart
Text/CategoryBar chart
TemporalLine chart
Numeric - binnedBar chart
Numeric - not binnedTable
BooleanBar chart
No aggregationTable
- -

Additionally, if you use location semantic types:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Group by semantic typeFunctionality
Latitude/Longitude - binnedGrid map
Latitude/longitude - not binnedPin map
CountryWorld region map
StateUnited States region map
- -

Extract values from columns

- -

For some fields, you can quickly extract values from columns using shortcuts in table view or in the custom expression editor in the query builder:

- - - - - - - - - - - - - - - - - - - - - - -
Group by data typeExtract
URL semantic typesExtract host, domain, subdomain, path
Email semantic typeExtract host, domain
Temporal data typesExtract date parts like month, day, etc
- -

X-rays

- -

When you X-ray a table, model, or entity, Metabase considers both the data type and the field type to display different charts that summarize that data.

- -

Field Filters

- -

Knowing what field types are and how they work is helpful when using field filters, as you can only create field filters for certain field types.

- -

JSON unfolding

- -

See Working with JSON.

- -

Set semantic types in models to enable people to explore results with the query builder

- -

You can set field types for models, which helps Metabase understand how to work with data in models built using SQL. If you set each column type in a SQL model, people will be able to explore that model using the query builder and drill-through menus.

- -

With records that include integer entity keys, you can also configure text fields in models to surface individual records in search.

- -

Further Reading

- - - - -
-
- -

- Read docs for other versions of Metabase. -

- -
-
- -
- -
-
-
Was this helpful?
- - -
- -
-

- -
- - - -
-
- -
-
Thanks for your feedback!
-
- - - - Want to improve these docs? Propose a change. - - -
- - - -
-
-
-
- - - - - - - - - - - - - - - -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. \ No newline at end of file diff --git a/_site/docs/master/data-modeling/formatting.html b/_site/docs/master/data-modeling/formatting.html index c776fd97e9..3d5ea66003 100644 --- a/_site/docs/master/data-modeling/formatting.html +++ b/_site/docs/master/data-modeling/formatting.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4698,37 +4698,168 @@
Other resources

Formatting defaults

-

There are Metabase users around the world, each with different preferences for how dates, times, numbers, and currencies should be formatted and displayed. Metabase allows you to customize these formatting options at three different levels:

+

People all around the world use Metabase, and everyone has different preferences for how dates, times, numbers, and currencies should be formatted and displayed. Metabase lets you to customize these formatting options at three different levels:

    -
  1. Global. Set global defaults in the Localization section in Admin -> Settings -> Localization.
  2. +
  3. Global. Set global defaults in Admin -> Settings -> Localization.
  4. Field. Set field (column) defaults in Admin -> Table Metadata. Field defaults override global defaults.
  5. Question. Set formatting defaults for individual questions in the visualization settings of that question. Question defaults override global and field defaults.
-

Field-level formatting

+

Field formatting

-

You can override the global defaults for a specific field by going to the Table Metadata section of the Admin Panel, selecting the database and table of the field in question, and clicking the gear icon on the far right of the screen next to that field to go to its options page, then clicking on the Formatting tab.

+

Admin settings > Table Metadata > Database > Table > Field > Formatting

-

The options you’ll see here will depend on the field’s type. They’re generally the same options as in the global formatting settings, with a few additions:

+

You can override the global defaults for a specific field by going to the Table Metadata section of the Admin Panel. Select the database and table of the field in question, then click scroll down to the Formatting.

-

Dates and Times

+

Formatting options depend on the data type and the semantic type

+ +

The options you’ll see here will depend on the field’s data type and it’s semantic type.

+ +

Text formatting options

+ +

Admin settings > Table Metadata > Database > Table > Field > Formatting

+ +

Options depend on the semantic type you select for the field.

+ +

Align

+ +

Whether to display the values in the middle, left, or right in table cells.

+ +

Display As

+ +

If you have text, like an image URL, you may need to change the semantic type before Metabase will offer you the option to display the text as an image.

+ +
    +
  • Text (display “as is”).
  • +
  • Email link (i.e., if you have a mailto link).
  • +
  • Image. Metabase will display links to images as images in tables.
  • +
  • Automatic. Metabase will detect the string based on its format.
  • +
  • Link. You can optionally change the text that you want to display in the Link text input field. For example, if you set the Link URL for an “Adjective” column to:
  • +
+ +
https://www.google.com/search?q={{adjective}}
+
+ +

When someone clicks on the value “askew” in the “Adjective” column, they’ll be taken to the Google search URL:

+ +
https://www.google.com/search?q=askew
+
+ +

Dates and times

+ +

Admin settings > Table Metadata > Database > Table > Field > Formatting

+ +

Options depend on the semantic type you select for the field.

+ +

Align

+ +

Whether to display the values in the middle, left, or right in table cells.

+ +

Display as

+ +
    +
  • Text (display “as is”).
  • +
  • Link (display the date/time as a clickable link).
  • +
+ +

Date style

+ +

Choose how dates are displayed. Options include formats like:

+ +
    +
  • January 31, 2018
  • +
  • 31/01/2018
  • +
  • 2018-01-31
  • +
  • And other regional date formats
  • +
+ +

Abbreviate days and months

+ +

Check this option to use abbreviated forms for days and months (e.g., “Jan” instead of “January”, “Mon” instead of “Monday”).

+ +

Show the time

+ +

This lets you choose if this time field should be displayed by default without the time; with hours and minutes; with hours, minutes, and seconds; or additionally with milliseconds.

    -
  • Show the time: this lets you choose if this time field should be displayed by default without the time; with hours and minutes; with hours, minutes, and seconds; or additionally with milliseconds.
  • +
  • Off - Display only the date without time
  • +
  • HH:MM - Display hours and minutes
  • +
  • HH:MM:SS - Display hours, minutes, and seconds
  • +
  • HH:MM:SS.MS - Display hours, minutes, seconds, and milliseconds
-

Numbers

+

Time style

+ +

Choose between 12-hour and 24-hour time format:

+ +
    +
  • 12-hour clock (e.g., 5:24 PM)
  • +
  • 24-hour clock (e.g., 17:24)
  • +
+ +

Numbers

+ +

Admin settings > Table Metadata > Database > Table > Field > Formatting

+ +

Options depend on the semantic type you select for the field.

+ +

Align

+ +

Whether to display the values in the middle, left, or right in table cells.

+ +

Show a mini bar chart

+ +

Only applies to table visualizations. Displays a bar for each value to show large or small it is relative to the other values in the column.

+ +

Display as

+ +
    +
  • Automatic - Metabase will automatically detect the best display format
  • +
  • Text - Display the number as plain text
  • +
  • Link - Display the number as a clickable link
  • +
+ +

Style

+ +

Lets you choose to display the number as a plain number, a percent, in scientific notation, or as a currency.

+ +
    +
  • Normal - Display as a regular number
  • +
  • Percent - Display as a percentage
  • +
  • Scientific notation - Display in scientific format (e.g., 1.23e+4)
  • +
  • Currency - Display with currency formatting
  • +
+ +

Where to display the unit of currency

+ +

For currency fields, choose where to show the currency symbol:

    -
  • Show a mini bar chart: only applies to table visualizations. Displays a bar for each value to show large or small it is relative to the other values in the column.
  • -
  • Style: lets you choose to display the number as a plain number, a percent, in scientific notation, or as a currency.
  • -
  • Separator style: this gives you various options for how commas and periods are used to separate the number.
  • -
  • Number of decimal places: forces the number to be displayed with exactly this many decimal places.
  • -
  • Multiply by a number: multiplies this number by whatever you type here.
  • -
  • Add a prefix/suffix: lets you put a symbol, word, etc. before or after this number.
  • +
  • In the column heading - Show the currency symbol in the table header
  • +
  • In every table cell - Show the currency symbol next to each value
+

Separator style

+ +

This gives you various options for how commas and periods are used to separate the number (e.g., 100,000.00, 100.000,00, 100 000.00).

+ +

Number of decimal places

+ +

Forces the number to be displayed with exactly this many decimal places.

+ +

Multiply by a number

+ +

Multiplies this number by whatever you type here. Useful for unit conversions or scaling values.

+ +

Add a prefix

+ +

Lets you put a symbol, word, etc. before this number (e.g., “$” for currency).

+ +

Add a suffix

+ +

Lets you put a symbol, word, etc. after this number (e.g., “dollars”, “%”, “units”).

+

Currency

Currency field formatting settings include all the same options as in the global formatting section, as well as all the options that Number fields have.

@@ -4737,7 +4868,7 @@

Currency

Question-level formatting

-

Lastly, you can override all formatting settings in any specific saved question or dashboard card by clicking on the gear to open up the visualization options. To reset any overridden setting to the default, just click on the rotating arrow icon next to the setting’s label. This will reset the setting to the field-level setting if there is one; otherwise it will be reset to the global default.

+

You can also override all formatting settings in any specific saved question or dashboard card by clicking on the gear to open the visualization options. To reset any overridden setting to the default, just click on the rotating arrow icon next to the setting’s label. This will reset the setting to the field-level setting if there is one; otherwise it will be reset to the global default.

Formatting options vary depending on the type of visualization:

diff --git a/_site/docs/master/data-modeling/images/column-settings.png b/_site/docs/master/data-modeling/images/column-settings.png deleted file mode 100644 index 6a8819a170..0000000000 Binary files a/_site/docs/master/data-modeling/images/column-settings.png and /dev/null differ diff --git a/_site/docs/master/data-modeling/images/field-filtering-preview.png b/_site/docs/master/data-modeling/images/field-filtering-preview.png new file mode 100644 index 0000000000..68dc081c37 Binary files /dev/null and b/_site/docs/master/data-modeling/images/field-filtering-preview.png differ diff --git a/_site/docs/master/data-modeling/images/format-as-url.png b/_site/docs/master/data-modeling/images/format-as-url.png deleted file mode 100644 index 65d35ce0da..0000000000 Binary files a/_site/docs/master/data-modeling/images/format-as-url.png and /dev/null differ diff --git a/_site/docs/master/data-modeling/images/original-schema.png b/_site/docs/master/data-modeling/images/original-schema.png deleted file mode 100644 index 6ed4ac9c1c..0000000000 Binary files a/_site/docs/master/data-modeling/images/original-schema.png and /dev/null differ diff --git a/_site/docs/master/data-modeling/images/table-metadata-settings.png b/_site/docs/master/data-modeling/images/table-metadata-settings.png new file mode 100644 index 0000000000..7531c1b9a1 Binary files /dev/null and b/_site/docs/master/data-modeling/images/table-metadata-settings.png differ diff --git a/_site/docs/master/data-modeling/images/table-metadata.png b/_site/docs/master/data-modeling/images/table-metadata.png deleted file mode 100644 index 73d3c7c159..0000000000 Binary files a/_site/docs/master/data-modeling/images/table-metadata.png and /dev/null differ diff --git a/_site/docs/master/data-modeling/images/unfold-json-setting.png b/_site/docs/master/data-modeling/images/unfold-json-setting.png index f69b404401..1527b522fe 100644 Binary files a/_site/docs/master/data-modeling/images/unfold-json-setting.png and b/_site/docs/master/data-modeling/images/unfold-json-setting.png differ diff --git a/_site/docs/master/data-modeling/json-unfolding.html b/_site/docs/master/data-modeling/json-unfolding.html index 1058b796ff..3c190e05b0 100644 --- a/_site/docs/master/data-modeling/json-unfolding.html +++ b/_site/docs/master/data-modeling/json-unfolding.html @@ -4751,8 +4751,8 @@

Toggling JSON unfolding f
  • Select the database that contains the field you want to update.
  • Select the table that contains the field.
  • Select the field containing the original JSON
  • -
  • Scroll to the Unfold JSON option and select Yes or No. If the column was unfolded, Metabase will have hidden this JSON columnn from view, so if you want the JSON column to be visible again, you’ll need to change the column’s visibility to Everywhere.
  • -
  • Scroll down and click on the Re-scan this field.
  • +
  • In the Behavior section, locate the Unfold JSON option and select Yes or No. If the column was unfolded, Metabase will have hidden this JSON columnn from view, so if you want the JSON column to be visible again, you’ll need to change the column’s visibility to Everywhere.
  • +
  • Scroll to the top and click the Filter values button and select Re-scan this field.
  • Unfolded JSON setting

    diff --git a/_site/docs/master/data-modeling/metadata-editing.html b/_site/docs/master/data-modeling/metadata-editing.html index f24b81d4fb..9a14a79131 100644 --- a/_site/docs/master/data-modeling/metadata-editing.html +++ b/_site/docs/master/data-modeling/metadata-editing.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4698,135 +4698,127 @@

    Other resources

    Table metadata admin settings

    -

    Metabase lets you add and edit metadata to your tables and columns so that you can manage your org’s business logic as it changes. Go to the Table Metadata tab in your Admin settings to:

    +

    Admin settings > Table metadata

    - +

    Table metadata settings

    -
    -

    The Table Metadata admin settings only affect the way data’s displayed and interpreted in Metabase. None of the settings will change the data in your database.

    -
    +

    Metabase lets you add and edit metadata for your tables and columns.

    -

    Table settings

    +

    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.

    -

    Click on a table name in the left sidebar to view the table’s settings in Metabase.

    +

    Table settings

    -

    If you’ve got more than one database connected to Metabase, click on the database name (for example, “Sample Database”) and select another database from the dropdown menu. Once you select a database, the tables in that database will appear in the sidebar.

    +

    Admin settings > Table metadata > Database > Table

    -

    Table metadata

    +

    You can search for tables, or use the tree navigation to find each of your connected databases and their tables.

    - +

    Table display name and description

    -

    Table display name

    +

    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.

    -

    To edit a table’s display name in Metabase, click into the box that contains the current table name. Changes will be saved automatically once you click out of the box.

    +

    Descriptions are displayed in Metabase’s data reference and tooltips when view the table. Decscriptions help people find the right table for their use case.

    -

    Table description

    +

    Table sync options

    -

    To add a table description, click into the box below the table name. Descriptions are displayed in Metabase’s data reference to help people find the right table for their use case.

    +

    Actions you can take to refresh the schema or field values. For more, check out syncs and scans.

    -

    Table visibility

    +

    Sync table schema

    -

    Queryable tables are visible across all of Metabase.

    +

    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.

    -

    Hidden tables won’t show up in the query builder or data reference. But this is not a security feature: hidden tables can still be used in SQL questions if someone writes SELECT * FROM hidden_table from the SQL editor. To prevent people from writing queries against specific tables, see data permissions.

    +

    To update the values in your filter dropdown menus, refresh or reset the cached values.

    -

    Tip: To hide all of the tables in a database (say, if you’ve migrated to a new database), click on the hidden eye icon beside “# queryable tables” in the left sidebar.

    +

    Scan field values

    -

    Original schema

    +

    Metabase uses these values to populate dropdown filters. You can also scan values for a specific field.

    -

    To remind yourself of column names and data types as they’re stored in your database, click Original schema (below Visibility).

    +

    Discard cached field values

    -

    Original schema

    +

    Clears cached values. Metabase will pull new values for display in your filter widgets.

    -

    Column (field) settings

    +

    Table sorting

    -

    Select a database and click on a table’s name in the sidebar to bring up basic column display settings:

    +

    You can sort the fields in a table in different ways:

    -

    For extra column settings, click on the gear icon at the right of a column’s settings box:

    +

    Table visibility

    -

    Column settings

    +

    You can toggle the visibility of a table by clicking on the eye icon next to the table name in the left sidebar navigation tree in the Table metadata tab.

    - +

    Hidden tables won’t show up in the query builder or data reference. But this is not a permissions feature: hidden tables can still be used in SQL questions if someone knows the name of the table. For example, SELECT * FROM table_name from the SQL editor would return results. To prevent people from writing queries against specific tables, see data permissions.

    + +

    To hide all of the tables in a database (say, if you’ve migrated to a new database), click on the eye icon next to the database name in the sidebar.

    -

    Column name

    +

    Field settings

    -

    To change the global display name of a column in Metabase, click on the name of the column. For example, you could display “auth.user” as “User” to make the column more readable. People can use models to give columns a display name that’s local to the model.

    +

    Admin settings > Table Metadata > Database > Table > Field

    -

    Column description

    +

    Fields are also known as Columns (see the difference between fields and columns).

    + +

    Field name and description

    + +

    To change the global display name of a column in Metabase, click on the name of the column. For example, you could display “auth.user” as “User” to make the column more readable. People can also use models to give columns a display name that’s local to the model.

    To add a description, click into the box below the column name. Descriptions are displayed in the data reference to help people interpret the column’s values. You should consider adding a description if your column contains:

      -
    • abbreviations or codes
    • -
    • zeroes, nulls, or blank values
    • -
    • placeholder values, like 9999-99-99
    • +
    • Abbreviations or codes
    • +
    • Zeroes, nulls, or blank values
    • +
    • Placeholder values, like 9999-99-99
    • +
    + +

    Field preview

    + +

    Field filtering preview

    + +

    Click the preview button to see sample data from that field.

    + +
      +
    • Table preview
    • +
    • Detail
    • +
    • Filtering
    -

    Column visibility

    +

    Scan values for a specific field

    -

    Everywhere: by default, users can see all of the columns in a table.

    +

    Admin settings > Table Metadata > Database > Table > Field

    -

    Only in detail views 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”.

    +

    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.)

    -

    Do not include columns won’t show up in the query builder or data reference. You can set “do not include” on sensitive columns (such as PII) or irrelevant columns. But this visibility option is a simple omit/hide option; it’s not a security 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 and they’ll be able to view these fields and their values. To prevent people from viewing certain columns, see data sandboxing.

    +

    Field data

    -

    Column order

    +

    Admin settings > Table Metadata > Database > Table > Field

    -

    Metabase defaults to the column order defined in your database schema. To reorder the column display order in question results and menus manually, click on the grab bar to the right of each column, and drag the column to a new position.

    +

    Field name

    -

    To sort the columns automatically, click on the sort icon at the top right of the first column’s settings box. The sorting options are:

    +

    This is the name of the field in the database itself. You can’t change it in Metabase.

    -
      -
    • Database. (Default) The order of columns as they appear in the database.
    • -
    • Alphabetical. A, B, C… however the alphabet works.
    • -
    • Custom. You choose the order. Metabase will automatically switch the sort order to “Custom” if you rearrange any of the columns.
    • -
    • Smart. Metabase chooses for you.
    • -
    +

    Data type

    -

    Field type

    +

    This is the data type of the field in the database. You can’t change the data type in Metabase, but you can cast certain data types to another data type.

    -

    To change the field type of a column, click on the Type dropdown menu in a column’s setting box. You can also use the Type dropdown to label a column as an entity key (primary key) or foreign key in Metabase (with no consequence to your database).

    +

    Cast to a specific data type

    -

    Casting to a specific data type

    +

    If you want Metabase to treat a text or number column as a datetime column, you can cast it to that type. Casting data types won’t affect the original data types in your database.

    -

    If you want Metabase to treat a text or number column as a datetime column:

    +

    For example, say you have a “Created At” column with a string data type in your database. If you want to:

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click on the gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Cast to a specific data type
    8. -
    9. Select a casting option.
    10. -
    +
      +
    • Create relative date filters, such as “Created At = Last week”.
    • +
    • Use “Created At” with formulas like datetimeAdd.
    • +
    + +

    You can cast that string to a Date type.

    -
    -

    Metabase currently supports limited casting options in Cast to a specific data type. If you need to cast to a type that’s not available in Metabase, you can create a SQL question that casts the data and save it as a model, or create a view directly in your database.

    -
    +

    Casting options include:

    Text to datetime casting options:

    @@ -4859,143 +4851,84 @@

    Casting to a specific data type

  • Datetime->Date
  • -

    Casting is different from setting the field type. For example, say you have a “Created At” column with a string data type in your database. You’ll need to cast “Created At” to one of the datetime types above if you want to do things like:

    +

    If Metabase doesn’t support the casting option you need, you can create a SQL question that casts the data and save it as a model, or create a view directly in your database.

    -
      -
    • Create relative date filters, such as “Created At = Last week”.
    • -
    • Use “Created At” with formulas like datetimeAdd.
    • -
    +

    Field metadata

    -
    -

    Casting data types from the Table Metadata admin settings won’t affect the original data types in your database.

    -
    +

    Admin settings > Table Metadata > Database > Table > Field

    -

    Changing the filter widget

    +

    Semantic type

    -

    To change a column’s filter widget:

    +

    You can change the semantic type 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.

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click on the gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Filtering on this field.
    8. -
    9. Select a filter widget option.
    10. -
    +

    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”.

    + +

    See semantic types.

    -

    Filter widget options

    +

    Field behavior

    -

    The default behavior for the Is filter for the field.

    +

    Admin settings > Table Metadata > Database > Table > Field

    + +

    Field visibility

      -
    • 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 list of checkboxes for values in a dropdown menu that people can select as search terms.
    • -
    • Plain input box: Display a search box, but do NOT suggest autocompletions.
    • +
    • Everywhere: By default, users can see all of the columns in a table.
    • +
    • 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 and they’ll be able to view these fields and their values.
    -

    Changing a search box filter to a dropdown filter

    +

    To restrict what data people can view and query, see data permissions.

    -

    The dropdown filter widget can be finicky, because Metabase needs to run a scan to get the list of values for the dropdown menu.

    +

    Filtering

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Scroll to your column.
    6. -
    7. In the column’s settings box, set Type to “Category”.
    8. -
    9. Set Filtering on this field to “A list of all values”.
    10. -
    +

    The Filtering setting changes a column’s default filter widget. Options include:

    -

    When you change a default filter to a dropdown filter, you’ll trigger a database query that gets the first 1,000 distinct values (ordered ascending) for that column. Metabase will cache the first 100kB of text to display in the dropdown menu. If you have columns with more than 1,000 distinct values, or columns with text-heavy data, we recommend setting Filtering on this field to “Search box” instead.

    +
      +
    • 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.
    • +
    • Plain input box: Display a search box, but don’t suggest autocompletions.
    • +
    -

    Remapping column values

    +

    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.

    -

    Say you have a column with the values 1, 2, and 3, and you want to map each number to the values “low”, “medium” and “high”. This kind of mapping can be done on columns that have numeric or foreign key field types.

    +

    Changing a search box filter to a dropdown filter

    -

    Remapping numbers

    +

    The dropdown filter widget can be finicky, because Metabase needs to run a scan to get the list of values for the dropdown menu. If you’re having trouble:

      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Display values.
    8. -
    9. Select “Custom mapping” from the dropdown menu.
    10. -
    11. Enter the display values under Mapped values.
    12. +
    13. Set the Semantic type to “Category”.
    14. +
    15. Set Filtering to “A list of all values”.
    -

    Remapping foreign keys

    +

    When you change a default filter to a dropdown filter, you’ll trigger a database query that gets the first 1,000 distinct values (ordered ascending) for that column. Metabase will cache the first 100kB of text to display in the dropdown menu.

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Display values.
    8. -
    9. Select “Use foreign key” from the dropdown menu.
    10. -
    11. Select a column name from the second dropdown menu.
    12. -
    +

    If you have columns with more than 1,000 distinct values, or columns with text-heavy data, we recommend setting Filtering to “Search box” instead.

    - +

    Display values

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click on the gear icon at the right of a column’s settings box.
    6. -
    7. Select Formatting from the sidebar.
    8. -
    9. From Display as, select Link.
    10. -
    11. Optional: set display text under Link text.
    12. -
    13. Enter the URL in the Link URL field.
    14. -
    15. Optional: create a dynamic URL by adding the column name as a {{parameter}}.
    16. -
    - -

    Format as URL

    - -

    For example, if you set the Link URL for an “Adjective” column to:

    +

    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.

    -
    https://www.google.com/search?q={{adjective}}
    -
    +

    Mapping values to foreign keys

    -

    When someone clicks on the value “askew” in the “Adjective” column, they’ll be taken to the Google search URL:

    +

    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.

    -
    https://www.google.com/search?q=askew
    -
    +

    Mapping numbers to custom values

    -

    Refresh or discard cached values

    +

    Say you have a column with values 1, 2, and 3. You could instead display “low”, “medium”, and “high”.

    -

    To update the values in your filter dropdown menus, refresh or reset the cached values. Cache actions include:

    - -
      -
    • Re-scan this table or field to run a manual scan for new or updated column values. If possible, re-scan the table during off-peak hours, as scans can slow down your database.
    • -
    • Discard cached field values to clear cached values and stop them from showing up in your filter widgets.
    • -
    +

    For this option to be available, you’ll need to set the filtering settings to “A list of all values”.

    -

    Table cache actions

    +

    Select “Custom mapping” from the dropdown menu. For each value in the column, enter a display value under Mapped values.

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click the gear icon at the top right (below Exit admin).
    6. -
    7. Select a cache action.
    8. -
    +

    Field formatting

    -

    Column cache actions

    +

    Admin settings > Table Metadata > Database > Table > Field

    -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click the gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Cached field values.
    8. -
    9. Select a cache action.
    10. -
    +

    See Field formatting.

    Unfold JSON

    -

    If Metabase supports JSON unfolding for your database, you can decide whether to unfold JSON into component fields, where each JSON key becomes a column. You can turn this off if performance is slow.

    - -
      -
    1. Go to Admin settings > Table Metadata.
    2. -
    3. Find your database and table.
    4. -
    5. Click the gear icon at the right of a column’s settings box.
    6. -
    7. Scroll to Unfold JSON.
    8. -
    9. Toggle JSON unfolding.
    10. -
    +

    See Working with JSON.

    Further reading

    diff --git a/_site/docs/master/data-modeling/models.html b/_site/docs/master/data-modeling/models.html index e603163ad3..d233b23474 100644 --- a/_site/docs/master/data-modeling/models.html +++ b/_site/docs/master/data-modeling/models.html @@ -4787,9 +4787,9 @@

    Database column this maps to

    Column type

    -

    You can set the column type. The default is “No special type”.

    +

    You can set the column type. The default is “No special type”.

    -

    If your model is based on a SQL query and you want people to be able to explore the results with the query builder, you’ll need to set the column type for each column in your model.

    +

    If your model is based on a SQL query and you want people to be able to explore the results with the query builder, you’ll need to set the column type for each column in your model.

    This column should appear in…

    diff --git a/_site/docs/master/data-modeling/segments.html b/_site/docs/master/data-modeling/segments.html index 012330cbc1..4887a0332b 100644 --- a/_site/docs/master/data-modeling/segments.html +++ b/_site/docs/master/data-modeling/segments.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4698,7 +4698,16 @@
    Other resources

    Segments

    -

    Metabase allows admins to create segments so people can quickly and easily reference them in the query builder. Just head over to the Admin Panel and select Table Metadata from the top menu.

    +

    Metabase allows admins to create segments so people can quickly and easily reference them in the query builder.

    + +

    To manage segments:

    + +
      +
    1. Click the gear icon in the upper right.
    2. +
    3. Select Admin setting.
    4. +
    5. Go to the Table Metadata tab.
    6. +
    7. Click Segments at the bottom left.
    8. +

    Creating a Segment

    diff --git a/_site/docs/master/data-modeling/semantic-types.html b/_site/docs/master/data-modeling/semantic-types.html new file mode 100644 index 0000000000..17242ebfdb --- /dev/null +++ b/_site/docs/master/data-modeling/semantic-types.html @@ -0,0 +1,5432 @@ + + + + + + + + + + + + + + + + + + +Data types and semantic types | Metabase Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + + +
    +
    + + + +
    +
    +
    + +
    + + + + + + + + + +
    + + + +
    + + +
    + +
    + +
    + + + +
    + + + master + + + + + + + + +
    + + + + + What’s new + + + + + +
    + + + + +
    +
    + + +
    + + +
    + + +
    + These are the docs for the Metabase master branch. Some features documented here may not yet be available in the latest release. + Check out the docs for the latest version, Metabase v0.55. +
    + + +
    + + +

    Data types and semantic types

    + +

    Metabase distinguishes between two types of column metadata: data types and field types.

    + +
      +
    • Data types are the underlying column type as defined in your database, like Date or Text. Metabase reads the data types during the database sync process.
    • +
    • Semantic types, also called field types, are labels that describe how the data should be interpreted. For example, if you have a column with a data type of Text that you use to store emails, you can add a semantic type of Email to let people (and Metabase) know what kind of text the column stores.
    • +
    + +

    Data and semantic types determine how Metabase formats the data, which charts are available, how the filters work, and other functionality.

    + +

    Data types

    + +

    Data types are the underlying column types as defined in your database. Metabase reads the data types during the database sync process. Because Metabase connects to many different databases, it uses its own type hierarchy under the hood, so that it can, for example, handle date fields in databases as different as PostgreSQL and MongoDB.

    + +

    The main data types in Metabase:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data TypeExample database types
    NumericINTEGER, FLOAT
    TemporalDATE, TIMESTAMP
    TextVARCHAR, TEXT
    Text-likeMongoDB BSONID, Postgres Enum
    BooleanBoolean
    CollectionJSON, BigQuery RECORD, MongoDB Object
    + +

    Metabase currently doesn’t support array types. On columns containing arrays, you’ll only be able to filter by Is empty or Is not empty.

    + +

    For some fields, you can tell Metabase to cast the field to a different data type (for example, changing a text type to a date type).

    + +

    Semantic types

    + +

    You can think of semantic types as adding meaning and context to a field to communicate its purpose and enable additional functionality. Available semantic types depend on the underlying data types.

    + +

    Semantic types for any field

    + +
      +
    • +

      Entity key. Used to indicate that the field uniquely identifies each row. Could be a Product ID, serial number, etc.

      +
    • +
    • +

      Foreign key. Used to refer to an Entity key of another table in order to connect data from different tables that are related. For example, in a Products table, you might have a Customer ID field that points to a Customers table, where Customer ID is the Entity key. If you want to use linked filters on dashboards, you must set up foreign key relationships.

      +
    • +
    + +

    Semantic types for numeric fields

    + +
      +
    • Quantity
    • +
    • Score
    • +
    • Percentage
    • +
    • Financial +
        +
      • Currency
      • +
      • Discount
      • +
      • Income
      • +
      +
    • +
    • Location +
        +
      • Latitude
      • +
      • Longitude
      • +
      +
    • +
    • Category
    • +
    + +

    Semantic types for temporal fields

    + +
      +
    • Creation date
    • +
    • Creation time
    • +
    • Creation timestamp
    • +
    • Joined date
    • +
    • Joined time
    • +
    • Joined timestamp
    • +
    • Birthday
    • +
    + +

    Semantic types for text fields

    + +
      +
    • Entity name
    • +
    • Email +
        +
      • URL
      • +
      • Image URL
      • +
      • Avatar URL
      • +
      +
    • +
    • Category
    • +
    • Name
    • +
    • Title
    • +
    • Description
    • +
    • Product
    • +
    • Source
    • +
    • Location +
        +
      • City
      • +
      • State
      • +
      • Country
      • +
      • ZipCode
      • +
      +
    • +
    + +

    Semantic types for collection fields

    + + + +

    Editing data and semantic types

    + +

    Admins, and people with permission to manage table metadata, can cast data types and edit semantic types in the Admin settings’ Table Metadata tab.

    + +

    Cast data types

    + +

    Data types can’t be edited in Metabase directly, but you can cast certain data types to different types so that, for example, Metabase will interpret a text data type as a date type.

    + +

    Changes made in Table Metadata apply across your entire Metabase. Metabase currently only supports casting to a datetime type in Metadata settings. However, if you build a query in the query builder, you can use type casting custom expressions like date() or integer() to cast a string to a different type in your query.

    + +

    Semantic types don’t change the data types

    + +

    You can pick a semantic type compatible with the underlying data type in table metadata settings.

    + +

    Semantic types only add meaning; they should not be used for type casting. For example, if you set a text field’s semantic type to “Quantity”, Metabase will still treat the field as a text field. Instead, apply semantic types to tell Metabase how to format or visualize the field (like telling Metabase that a numeric value represents a percentage).

    + +

    What data and semantic types enable

    + +

    Display format

    + +

    Some semantic types change the way the data in the field is displayed.

    + +

    Formatting settings from Table Metadata settings will be applied across your Metabase, but people can change them for individual charts.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Semantic typeFormat
    PercentageDisplayed as percentage, for example 0.75 will be displayed as 75%
    CurrencyOn charts and in detail view, the values are prepended by the currency symbol, e.g., $134.65. By default in the table view, the currency symbol is only displayed in the header, but you can change the metadata formatting settings to show the symbol for every row.
    Latitude/LongitudeDisplayed as coordinates, e.g., 0.00000000° N
    EmailDisplay as a mailto link
    URLCan format as a clickable link
    Image URLCan display as an image. See table format settings
    Avatar URLCan display as avatar circle image. See table format settings
    Field containing JSONIn detail view, display as prettified JSON
    Entity and Foreign keyHighlighted in table view
    + +

    Visualizations

    + +

    When you create a question in the query builder, Metabase will automatically choose the most suitable chart for you based on the data types and the semantic types of the field in the “Group by” step (you can change the chart type later).

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Group by data typeAutomatic chart
    Text/CategoryBar chart
    TemporalLine chart
    Numeric - binnedBar chart
    Numeric - not binnedTable
    BooleanBar chart
    No aggregationTable
    + +

    Additionally, if you use location semantic types:

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Group by semantic typeFunctionality
    Latitude/Longitude - binnedGrid map
    Latitude/longitude - not binnedPin map
    CountryWorld region map
    StateUnited States region map
    + +

    Extract values from columns

    + +

    For some fields, you can quickly extract values from columns using shortcuts in table view or in the custom expression editor in the query builder:

    + + + + + + + + + + + + + + + + + + + + + + +
    Group by data typeExtract
    URL semantic typesExtract host, domain, subdomain, path
    Email semantic typeExtract host, domain
    Temporal data typesExtract date parts like month, day, etc
    + +

    X-rays

    + +

    When you X-ray a table, model, or entity, Metabase considers both the data type and the field type to display different charts that summarize that data.

    + +

    Field Filters

    + +

    Knowing what field types are and how they work is helpful when using field filters, as you can only create field filters for certain field types.

    + +

    JSON unfolding

    + +

    See Working with JSON.

    + +

    Set semantic types in models to enable people to explore results with the query builder

    + +

    You can set field types for models, which helps Metabase understand how to work with data in models built using SQL. If you set each column type in a SQL model, people will be able to explore that model using the query builder and drill-through menus.

    + +

    With records that include integer entity keys, you can also configure text fields in models to surface individual records in search.

    + +

    Further Reading

    + + + + +
    +
    + +

    + Read docs for other versions of Metabase. +

    + +
    +
    + +
    + +
    +
    +
    Was this helpful?
    + + +
    + +
    +

    + +
    + + + +
    +
    + +
    +
    Thanks for your feedback!
    +
    + + + + Want to improve these docs? Propose a change. + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_site/docs/master/data-modeling/start.html b/_site/docs/master/data-modeling/start.html index 2d10599b69..7c8f69f505 100644 --- a/_site/docs/master/data-modeling/start.html +++ b/_site/docs/master/data-modeling/start.html @@ -4716,11 +4716,11 @@

    Table metada

    Guide people to the right data by adding display names, hiding outdated tables, configuring filter types, and more.

    -

    Field types

    +

    Field types

    Field types dictate how Metabase displays its data, as well as the column’s special functionality, if any.

    -

    Setting default formatting for your data

    +

    Setting default formatting for your data

    Define formatting and display defaults for numbers, currencies, datetimes, and more.

    diff --git a/_site/docs/master/databases/connecting.html b/_site/docs/master/databases/connecting.html index 4def537c6d..c49c20b3a8 100644 --- a/_site/docs/master/databases/connecting.html +++ b/_site/docs/master/databases/connecting.html @@ -4761,7 +4761,7 @@

    Deleting databases

    Restoring the Sample Database

    -

    If you’ve deleted the Metabase Sample Database, go to Admin settings > Databases and click Bring the Sample Database back.

    +

    If you’ve deleted the Metabase Sample Database, go to Admin settings > Databases and click Bring the Sample Database back.

    Troubleshooting

    diff --git a/_site/docs/master/databases/sync-scan.html b/_site/docs/master/databases/sync-scan.html index 6e05ba97f6..f75dd8e878 100644 --- a/_site/docs/master/databases/sync-scan.html +++ b/_site/docs/master/databases/sync-scan.html @@ -4708,7 +4708,7 @@

    Syncing and scanning databases

    Initial sync, scan, and fingerprinting

    -

    When Metabase first connects to your database, it performs a sync to determine the metadata of the columns in your tables and automatically assign each column a semantic type.

    +

    When Metabase first connects to your database, it performs a sync to determine the metadata of the columns in your tables and automatically assign each column a semantic type.

    You can follow the progress of these queries from Gear icon >Admin settings > Tools > Tasks and filtering by the various sync tasks.

    @@ -4751,7 +4751,7 @@

    Scanning for filter values

  • Never, I’ll do this manually if I need to is an option for databases that are either prohibitively large or which never really have new values added. Use the Re-scan field values button to run a manual scan and bring your filter values up to date.
  • -

    Regardless of which option you pick, if you set a field to use a dropdown list in filter widgets, Metabase will need to get values for that dropdown. Whenever someone uses that filter widget, Metabase will first look for cached values (valid for fourteen days) to populate that dropdown; otherwise, it will re-scan that field for the most up-to-date values.

    +

    Regardless of which option you pick, if you set a field to use a dropdown list in filter widgets, Metabase will need to get values for that dropdown. Whenever someone uses that filter widget, Metabase will first look for cached values (valid for fourteen days) to populate that dropdown; otherwise, it will re-scan that field for the most up-to-date values.

    Manually syncing tables and columns

    diff --git a/_site/docs/master/embedding/interactive-embedding.html b/_site/docs/master/embedding/interactive-embedding.html index 51ae06a353..b4015cd560 100644 --- a/_site/docs/master/embedding/interactive-embedding.html +++ b/_site/docs/master/embedding/interactive-embedding.html @@ -4738,7 +4738,7 @@

    Interactive embedding

    Interactive embedding is what you want if you want to offer multi-tenant, self-service analytics.

    -

    Interactive embedding is the only type of embedding that integrates with your permissions and SSO to give people the right level of access to query and drill-down into your data.

    +

    Interactive embedding is the only type of embedding that integrates with your permissions and SSO to give people the right level of access to query and drill-down into your data.

    Interactive embedding demo

    diff --git a/_site/docs/master/embedding/introduction.html b/_site/docs/master/embedding/introduction.html index d45653cf32..e6e4796adc 100644 --- a/_site/docs/master/embedding/introduction.html +++ b/_site/docs/master/embedding/introduction.html @@ -4802,7 +4802,7 @@

    Comparison of embedding types

    ❌ - Self-serve via query builder + Self-serve via query builder ✅ ✅ ❌ diff --git a/_site/docs/master/embedding/sdk/upgrade.html b/_site/docs/master/embedding/sdk/upgrade.html new file mode 100644 index 0000000000..af4dbdaf2b --- /dev/null +++ b/_site/docs/master/embedding/sdk/upgrade.html @@ -0,0 +1,5171 @@ + + + + + + + + + + + + + + + + + + +Upgrading Metabase and the Embedded analytics SDK | Metabase Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + + +
    +
    + + + +
    +
    +
    + +
    + + + + + + + + + +
    + + + +
    + + +
    + +
    + +
    + + + +
    + + + master + + + + + + + + +
    + + + + + What’s new + + + + + +
    + + + + +
    +
    + + +
    + + +
    + + +
    + These are the docs for the Metabase master branch. Some features documented here may not yet be available in the latest release. + Check out the docs for the latest version, Metabase v0.55. +
    + + +
    + + +

    Upgrading Metabase and the Embedded analytics SDK

    + +

    Here’s a basic overview of the steps you’ll want to take when upgrading your SDK.

    + +

    1. Read the release post and changelog for both Metabase and the Embedded analytics SDK

    + + + +

    Check for any relevant changes, especially breaking changes that require you to update your application’s code. If there are breaking changes, we’ll have docs that’ll walk you through what changes you’ll need to make and why.

    + +

    2. Test the upgrade

    + +

    When upgrading to a new major version, you’ll want to upgrade both Metabase and the SDK version in parallel, as having Metabase and the SDK major versions out of sync can cause errors.

    + +

    Spin up the new version of Metabase for testing

    + +

    You can do this locally or in a dev instance. If your testing setup involves a lot of test user accounts, getting a development instance could be more cost-effective.

    + +

    See upgrading Metabase.

    + +

    Upgrade the SDK with npm or yarn

    + +

    You’ll want to test the changes locally first, as there may be breaking changes that require you to upgrade your application code.

    + +

    Check out a new branch in your application and install the next stable version, either with npm or yarn:

    + +

    Via npm:

    + +
    npm install @metabase/embedding-sdk-react@{next-major-version-number}-stable
    +
    + +

    For example, if you were upgrading to version 55 of the SDK:

    + +
    npm install @metabase/embedding-sdk-react@55-stable
    +
    + +

    If you’re using yarn:

    + +
    yarn add @metabase/embedding-sdk-react@{next-major-version-number}-stable
    +
    + +

    See more on SDK versions.

    + +

    If there are breaking changes, make the necessary changes to your application code

    + +

    Breaking changes are rare, but if you do need to make changes, we’ll mention it in the release notes for the new major version and have docs that walk you through the changes.

    + +

    Update or add tests for any application code changes that you make.

    + +

    Deploy to your staging environment

    + +

    Before deploying your app to your staging environment, make sure you’ve tested your app locally (manually, as well as running any automated tests).

    + +

    If all goes well with your local tests, deploy to your staging environment. Check that the Metabase embeds in your staging app are still working as expected, and perform any other testing you normally do with your application with respect to your embedded analytics.

    + +

    3. Deploy to production

    + +

    If everything is working in staging, you’re ready to deploy to production.

    + +

    Be sure to deploy your application changes and upgrade your Metabase in parallel so that the SDK version and the Metabase version stay in sync.

    + +

    If your instance is on Metabase Cloud, you’ll need to request an upgrade

    + +

    If you’re on Metabase Cloud, your instance version is pinned, so you’ll need to request an upgrade by contacting support.

    + +

    We’ll coordinate with you so that your instance is upgraded when you deploy the changes to your application.

    + + +
    +
    + +

    + Read docs for other versions of Metabase. +

    + +
    +
    + +
    + +
    +
    +
    Was this helpful?
    + + +
    + +
    +

    + +
    + + + +
    +
    + +
    +
    Thanks for your feedback!
    +
    + + + + Want to improve these docs? Propose a change. + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/version.html b/_site/docs/master/embedding/sdk/version.html index a54e43a803..61c7f558a4 100644 --- a/_site/docs/master/embedding/sdk/version.html +++ b/_site/docs/master/embedding/sdk/version.html @@ -4718,39 +4718,36 @@

    Embedded analytics SDK - versions

    The SDK stable version tracks with the Metabase version.

    -

    So, for example, if you’re on Metabase 53 (0.53.x, 1.53.x), any version 0.53.x of the @metabase/embedding-sdk-react npm package will be compatible.

    +

    So, for example, if you’re on Metabase 55 (0.55.x, 1.55.x), any version 0.55.x of the @metabase/embedding-sdk-react npm package will be compatible.

    -

    To simplify things, we publish dist-tags for each stable Metabase version. For example, to install the latest version of the SDK compatible with Metabase 53, run:

    +

    To simplify things, we publish dist-tags for each stable Metabase version. For example, to install the latest version of the SDK compatible with Metabase 55, run:

    -
    npm install @metabase/embedding-sdk-react@53-stable
    +
    npm install @metabase/embedding-sdk-react@55-stable
     

    To grab the latest version of the SDK that works with Metabase nightly builds, use the canary dist-tag.

    Minimum SDK version

    -

    52 is the minimum version supported for the Embedded analytics SDK.

    +

    Version 52 is the minimum version supported for the Embedded analytics SDK.

    -

    Version pinning when using the SDK with Metabase Cloud

    +

    Instances on Metabase Cloud will be pinned to a specific version

    -

    To pin your version of Metabase, go to Admin settings > Settings > Embedding. Go to the Embedded analytics SDK card and scroll to Version pinning and click Request version pinning.

    +

    By default, if you’re running on Metabase Cloud and using the Embedded analytics SDK, we’ll pin your version to avoid breaking changes.

    -

    Version pinning requirements

    +

    Normally, Metabase Cloud upgrades your Metabase as new versions roll out so you don’t have to deal with upgrades. But if you’re using the SDK with Metabase Cloud, you’ll want to upgrade manually to make sure your embeds don’t break when you upgrade both your Metabase and your SDK version.

    -

    To pin a version of Metabase, you must:

    +

    Manually pinning your instance version on Metabase Cloud

    -
      -
    • Be on Metabase Cloud (obviously)
    • -
    • Be on the Pro or Enterprise plans
    • -
    +

    To manually pin your version of Metabase:

    -

    Why you’d want to pin your Metabase Cloud version

    +
      +
    1. Go to Admin settings > Settings > Embedding.
    2. +
    3. Go to the Embedded analytics SDK card.
    4. +
    5. Scroll to Version pinning and click Request version pinning.
    6. +
    -

    Normally, Metabase Cloud upgrades your Metabase as new versions roll out so that you don’t have to deal with upgrades.

    - -

    But if you’re using the SDK with Metabase Cloud, you’ll want to upgrade manually to make sure your embeds don’t break when you upgrade both your Metabase and your SDK version.

    - -

    To upgrade manually, you can pin your Metabase version so that it stays in sync with the SDK version you’re using. That way you can choose when to upgrade your Metabase.

    +

    This will open a mailto link to our support team.

    diff --git a/_site/docs/master/index.html b/_site/docs/master/index.html index d5992e4aef..e600f02692 100644 --- a/_site/docs/master/index.html +++ b/_site/docs/master/index.html @@ -4925,7 +4925,7 @@

    Data modeling

  • Model persistence
  • Metrics
  • Table metadata admin settings
  • -
  • Field types
  • +
  • Field types
  • Formatting defaults
  • Working with JSON
  • Segments
  • diff --git a/_site/docs/master/installation-and-operation/upgrading-metabase.html b/_site/docs/master/installation-and-operation/upgrading-metabase.html index 9fc1f73e59..90d3f51c96 100644 --- a/_site/docs/master/installation-and-operation/upgrading-metabase.html +++ b/_site/docs/master/installation-and-operation/upgrading-metabase.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4698,11 +4698,17 @@
    Other resources

    Upgrading Metabase

    -

    This page covers how to upgrade to a new Metabase release.

    +

    This page covers how to upgrade to a new Metabase release.

    + +

    Upgrading Metabase Cloud

    -

    If you’re on a Metabase Cloud plan, we’ll upgrade your Metabase automatically with each new release; no action needed on your end.

    +

    If you’re on a Metabase Cloud plan, we’ll upgrade your Metabase automatically with each new release; no action needed on your end (unless you’re using the Embedded analytics SDK).

    How soon we upgrade you depends on the type of release:

    @@ -4713,6 +4719,14 @@

    Upgrading Metabase Cloud

    Cloud customers can request an early upgrade by emailing support at help@metabase.com. Include the URL of the Metabase you want us to upgrade.

    +

    Instances using the Embedded analtyics SDK on Metabase Cloud must request an upgrade

    + +

    If you’re using the Embedded analytics SDK on Metabase Cloud, we pin your version so that it doesn’t upgrade automatically, as you should test the changes before upgrading.

    + +

    To upgrade your Metabase, you’ll need to request an upgrade by contacting support.

    + +

    See our upgrade guide for the Embedded analytics SDK.

    +

    Upgrading a self-hosted Metabase

    Here are the steps for upgrading to a new Metabase version (major or minor):

    diff --git a/_site/docs/master/permissions/impersonation.html b/_site/docs/master/permissions/impersonation.html index 4f2399b366..83207f9b92 100644 --- a/_site/docs/master/permissions/impersonation.html +++ b/_site/docs/master/permissions/impersonation.html @@ -4717,7 +4717,7 @@

    Impersonation permissions

    -

    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.

    +

    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.

    diff --git a/_site/docs/master/questions/images/join-with-custom-expression.png b/_site/docs/master/questions/images/join-with-custom-expression.png deleted file mode 100644 index 713683583e..0000000000 Binary files a/_site/docs/master/questions/images/join-with-custom-expression.png and /dev/null differ diff --git a/_site/docs/master/questions/native-editor/writing-sql.html b/_site/docs/master/questions/native-editor/writing-sql.html index 3b81fb7ace..d1f1d8ec85 100644 --- a/_site/docs/master/questions/native-editor/writing-sql.html +++ b/_site/docs/master/questions/native-editor/writing-sql.html @@ -4714,7 +4714,7 @@

    Starting a new SQL query

    SQL editor

    -

    To try it out, make sure you’ve selected the Sample Database, then paste in this short SQL query:

    +

    To try it out, make sure you’ve selected the Sample Database, then paste in this short SQL query:

    SELECT
         sum(subtotal),
    diff --git a/_site/docs/master/questions/query-builder/expressions/coalesce.html b/_site/docs/master/questions/query-builder/expressions/coalesce.html
    index fd08bf09d4..14d2dbc725 100644
    --- a/_site/docs/master/questions/query-builder/expressions/coalesce.html
    +++ b/_site/docs/master/questions/query-builder/expressions/coalesce.html
    @@ -4881,7 +4881,7 @@ 

    Limitations

    If you want to use coalesce with JSON or JSONB data types, you’ll need to flatten the JSON objects first. For more information, look up the JSON functions that are available in your SQL dialect. You can find some common SQL reference guides here.

    diff --git a/_site/docs/master/questions/query-builder/expressions/converttimezone.html b/_site/docs/master/questions/query-builder/expressions/converttimezone.html index f7a9206aca..5ea5eb0a06 100644 --- a/_site/docs/master/questions/query-builder/expressions/converttimezone.html +++ b/_site/docs/master/questions/query-builder/expressions/converttimezone.html @@ -4881,7 +4881,7 @@

    Accepted data types

    We use “timestamp” and “datetime” to talk about any temporal data type that’s supported by Metabase.

    -

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    +

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    To use convertTimezone without running into errors or pesky undetectable mistakes, you should know that there are a few varieties of timestamp data types:

    @@ -5012,7 +5012,7 @@

    SQL

    -

    When you run a question using the 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, 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 is a timestamp without time zone stored in a PostgreSQL database:

    diff --git a/_site/docs/master/questions/query-builder/expressions/countif.html b/_site/docs/master/questions/query-builder/expressions/countif.html index 90e4832a9a..0fc61eb54d 100644 --- a/_site/docs/master/questions/query-builder/expressions/countif.html +++ b/_site/docs/master/questions/query-builder/expressions/countif.html @@ -5036,7 +5036,7 @@

    Conditional running counts

    SQL

    -

    When you run a question using the 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, 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 is stored in a PostgreSQL database, the SQL query:

    diff --git a/_site/docs/master/questions/query-builder/expressions/datetimeadd.html b/_site/docs/master/questions/query-builder/expressions/datetimeadd.html index c937a46f67..d84a054eae 100644 --- a/_site/docs/master/questions/query-builder/expressions/datetimeadd.html +++ b/_site/docs/master/questions/query-builder/expressions/datetimeadd.html @@ -4865,7 +4865,7 @@

    Accepted data types

    We use “timestamp” and “datetime” to talk about any temporal data type that’s supported by Metabase. For more info about these data types in Metabase, see Timezones.

    -

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    +

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    Limitations

    @@ -4903,7 +4903,7 @@

    datetimeSubtract

    SQL

    -

    When you run a question using the 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, 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 is stored in a PostgreSQL database:

    diff --git a/_site/docs/master/questions/query-builder/expressions/datetimediff.html b/_site/docs/master/questions/query-builder/expressions/datetimediff.html index 3a35ca52e9..0109b48209 100644 --- a/_site/docs/master/questions/query-builder/expressions/datetimediff.html +++ b/_site/docs/master/questions/query-builder/expressions/datetimediff.html @@ -4827,7 +4827,7 @@

    Accepted data types

    We use “timestamp” and “datetime” to talk about any temporal data type that’s supported by Metabase. For more info about these data types in Metabase, see Timezones.

    -

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    +

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    Limitations

    @@ -4849,7 +4849,7 @@

    SQL

    -

    When you run a question using the 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, 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 is stored in a PostgreSQL database:

    diff --git a/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html b/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html index d66542e8c8..6e612bee2e 100644 --- a/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html +++ b/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html @@ -4865,7 +4865,7 @@

    Accepted data types

    We use “timestamp” and “datetime” to talk about any temporal data type that’s supported by Metabase. For more info about these data types in Metabase, see Timezones.

    -

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    +

    If your timestamps are stored as strings or numbers in your database, an admin can cast them to timestamps from the Table Metadata page.

    Limitations

    @@ -4903,7 +4903,7 @@

    datetimeAdd

    SQL

    -

    When you run a question using the 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, 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 is stored in a PostgreSQL database:

    diff --git a/_site/docs/master/questions/query-builder/expressions/isempty.html b/_site/docs/master/questions/query-builder/expressions/isempty.html index 4eace3c9da..1240a735d8 100644 --- a/_site/docs/master/questions/query-builder/expressions/isempty.html +++ b/_site/docs/master/questions/query-builder/expressions/isempty.html @@ -4861,7 +4861,7 @@

    SQL

    -

    In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.

    +

    In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.

    CASE WHEN (Feedback = "" OR Feedback IS NULL) THEN "No feedback"
          ELSE Feedback END
    diff --git a/_site/docs/master/questions/query-builder/expressions/isnull.html b/_site/docs/master/questions/query-builder/expressions/isnull.html
    index 2d2f760435..acfaaf3f85 100644
    --- a/_site/docs/master/questions/query-builder/expressions/isnull.html
    +++ b/_site/docs/master/questions/query-builder/expressions/isnull.html
    @@ -4865,7 +4865,7 @@ 
     
     

    SQL

    -

    In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.

    +

    In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.

    CASE WHEN Feedback IS NULL THEN "Unknown feedback",
          ELSE Feedback END
    diff --git a/_site/docs/master/questions/query-builder/expressions/now.html b/_site/docs/master/questions/query-builder/expressions/now.html
    index 462a81fed9..88ca6164db 100644
    --- a/_site/docs/master/questions/query-builder/expressions/now.html
    +++ b/_site/docs/master/questions/query-builder/expressions/now.html
    @@ -4815,7 +4815,7 @@ 
     
     

    SQL

    -

    When you run a question using the 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, 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. If your admin hasn’t set a report time zone, now will use your database’s time zone.

    diff --git a/_site/docs/master/questions/query-builder/expressions/sumif.html b/_site/docs/master/questions/query-builder/expressions/sumif.html index 09e3fbe0b3..07664d4557 100644 --- a/_site/docs/master/questions/query-builder/expressions/sumif.html +++ b/_site/docs/master/questions/query-builder/expressions/sumif.html @@ -5013,7 +5013,7 @@

    CumulativeSum

    SQL

    -

    When you run a question using the 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, 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 is stored in a PostgreSQL database, the SQL query:

    diff --git a/_site/docs/master/questions/query-builder/join.html b/_site/docs/master/questions/query-builder/join.html index 919d31f21f..367734e408 100644 --- a/_site/docs/master/questions/query-builder/join.html +++ b/_site/docs/master/questions/query-builder/join.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4702,28 +4702,28 @@

    Joining data

    You can join data to combine your current data with another table, or even with a saved question.

    -

    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.

    +

    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.

    Picking the data to join

    -

    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.

    +

    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.

    -

    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.

    +

    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.

    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 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.

    +

    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.

    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 “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 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.

    An A to B to C join

    @@ -4748,46 +4748,11 @@

    Joining with different operators

    Join operators

    -

    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

    - -

    To use a custom expression to define a join key:

    - -
      -
    1. Click on one of the join keys.
    2. -
    3. Select custom expression.
    4. -
    5. Enter your expression (including a constant like 1).
    6. -
    7. Click Done.
    8. -
    - -

    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.

    -

    Further reading

    diff --git a/_site/docs/master/questions/visualizations/map.html b/_site/docs/master/questions/visualizations/map.html index 1a26eb5b5d..4c6e282fbd 100644 --- a/_site/docs/master/questions/visualizations/map.html +++ b/_site/docs/master/questions/visualizations/map.html @@ -4748,7 +4748,7 @@

    Create a pin map

  • Build a query with latitude and longitude columns for each data point (either in the query builder or using SQL);
  • Select Visualization, and pick Map;
  • -

    If your query results have columns whose field type is set to latitude/longitude in table metadata, Metabase should build a pin map automatically.

    +

    If your query results have columns whose field type is set to latitude/longitude in table metadata, Metabase should build a pin map automatically.

    Otherwise, click on the Gear icon to go to visualization settings, choose Map type: Pin map, and pick columns that contain latitude and longitude coordinates.

  • @@ -4784,7 +4784,7 @@

    Create a grid map

  • Build a query with summary by binned latitude and longitude columns (either in the query builder or using SQL);
  • Select Visualization, and pick Map;
  • -

    If your query results have columns whose field type is set to latitude/longitude in table metadata, Metabase should build a grid map automatically.

    +

    If your query results have columns whose field type is set to latitude/longitude in table metadata, Metabase should build a grid map automatically.

    Otherwise, click on the Gear icon to go to visualization settings, choose Map type: grid map, and pick columns that contain latitude and longitude coordinates.

  • @@ -4859,7 +4859,7 @@

    World Map

    The country codes in the query results must match the two-letter codes exactly: if the country codes are lowercase or contain extra spaces, Metabase won’t recognize them.

    -

    If your query result has columns with semantic type “Country”, Metabase should build a world map automatically. Otherwise, you can choose which columns to use as the country name in the Region field visualization setting.

    +

    If your query result has columns with semantic type “Country”, Metabase should build a world map automatically. Otherwise, you can choose which columns to use as the country name in the Region field visualization setting.

    You can connect the country column in the world region map to a “Location” type dashboard filter.

    @@ -4894,7 +4894,7 @@

    United States map

    -

    If your query result has columns with semantic type “State”, Metabase should build a US map automatically. Otherwise, you can choose which columns to use as the country name in the visualization settings.

    +

    If your query result has columns with semantic type “State”, Metabase should build a US map automatically. Otherwise, you can choose which columns to use as the country name in the visualization settings.

    You can connect the state column in the US region map to a “Location” type dashboard filter.

    diff --git a/_site/docs/master/questions/visualizations/table.html b/_site/docs/master/questions/visualizations/table.html index 2775c95639..54e277db13 100644 --- a/_site/docs/master/questions/visualizations/table.html +++ b/_site/docs/master/questions/visualizations/table.html @@ -4712,7 +4712,7 @@

    Rearranging, adding, and hiding c

    Adding or removing columns

    -

    Admins (and people in groups with access to table metadata) can hide columns across your entire Metabase by marking them as hidden in the table metadata settings.

    +

    Admins (and people in groups with access to table metadata) can hide columns across your entire Metabase by marking them as hidden in the table metadata settings.

    Hiding columns should not be used to secure sensitive information. Hiding columns in table visualization settings only affects the visibility of the columns in the visualization, not in the query results. Even people with view-only permissions to the question will be able to change the visualization settings and unhide columns. To exclude a column from the results of a specific query, uncheck the column in the “Data” block of the query builder.

    diff --git a/_site/docs/master/troubleshooting-guide/filters.html b/_site/docs/master/troubleshooting-guide/filters.html index fccb4e2cc4..ac2eb7b6f3 100644 --- a/_site/docs/master/troubleshooting-guide/filters.html +++ b/_site/docs/master/troubleshooting-guide/filters.html @@ -4738,7 +4738,7 @@

    Question filters

  • Ask your Metabase admin to help you check if:
  • @@ -4783,7 +4783,7 @@

    Time, ID, and number filters

  • Cast the column to a data type that matches the desired filter type. You can:
  • diff --git a/_site/docs/master/users-guide/field-types.html b/_site/docs/master/users-guide/field-types.html index 13b01bb18b..ca5b4dfc32 100644 --- a/_site/docs/master/users-guide/field-types.html +++ b/_site/docs/master/users-guide/field-types.html @@ -1,10 +1,10 @@ Redirecting… - - - + + +

    Redirecting…

    - Click here if you are not redirected. + Click here if you are not redirected. \ No newline at end of file