diff --git a/schemas/1.5/dbt_project-1.5.json b/schemas/1.5/dbt_project-1.5.json index 96d1556..272d21d 100644 --- a/schemas/1.5/dbt_project-1.5.json +++ b/schemas/1.5/dbt_project-1.5.json @@ -832,13 +832,13 @@ }, "grants": { "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" - } - }, - "additionalProperties": false + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" + } + }, + "additionalProperties": false }, "group": { "type": "string" diff --git a/schemas/1.5/dbt_yml_files-1.5.json b/schemas/1.5/dbt_yml_files-1.5.json index b96a16f..e60ecd9 100644 --- a/schemas/1.5/dbt_yml_files-1.5.json +++ b/schemas/1.5/dbt_yml_files-1.5.json @@ -806,13 +806,13 @@ }, "grants": { "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" - } - }, - "additionalProperties": false + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" + } + }, + "additionalProperties": false }, "group": { "type": "string" diff --git a/schemas/1.6/dbt_project-1.6.json b/schemas/1.6/dbt_project-1.6.json index c954cb8..9617989 100644 --- a/schemas/1.6/dbt_project-1.6.json +++ b/schemas/1.6/dbt_project-1.6.json @@ -794,13 +794,13 @@ }, "grants": { "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" - } - }, - "additionalProperties": false + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" + } + }, + "additionalProperties": false }, "group": { "type": "string" diff --git a/schemas/1.6/dbt_yml_files-1.6.json b/schemas/1.6/dbt_yml_files-1.6.json index 7dbdabb..14da80d 100644 --- a/schemas/1.6/dbt_yml_files-1.6.json +++ b/schemas/1.6/dbt_yml_files-1.6.json @@ -341,7 +341,7 @@ "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, - "grants" : { + "grants": { "$ref": "#/$defs/grants" }, "quote_columns": { @@ -454,7 +454,7 @@ "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, - "grants" : { + "grants": { "$ref": "#/$defs/grants" }, "persist_docs": { @@ -897,13 +897,13 @@ }, "grants": { "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" - } - }, - "additionalProperties": false + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" + } + }, + "additionalProperties": false }, "group": { "type": "string" @@ -1091,7 +1091,7 @@ "additionalProperties": false } }, - "grants" : { + "grants": { "$ref": "#/$defs/grants" }, "hours_to_expiration": { diff --git a/schemas/dbt_project.json b/schemas/dbt_project.json index 4e2ff74..ee3b92d 100644 --- a/schemas/dbt_project.json +++ b/schemas/dbt_project.json @@ -793,13 +793,13 @@ }, "grants": { "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" - } - }, - "additionalProperties": false + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" + } + }, + "additionalProperties": false }, "hours_to_expiration": { "type": "number", diff --git a/schemas/dbt_yml_files.json b/schemas/dbt_yml_files.json index 5b6a28d..5cc2e90 100644 --- a/schemas/dbt_yml_files.json +++ b/schemas/dbt_yml_files.json @@ -1,1091 +1,1088 @@ { - "title": "dbt_yml_files", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "version": { - "type": "number", - "const": 2 - }, - "analyses": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "columns": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "data_type": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "config": { + "title": "dbt_yml_files", + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "version": { + "type": "number", + "const": 2 + }, + "analyses": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "columns": { + "type": "array", + "items": { "type": "object", + "required": ["name"], "properties": { - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "data_type": { + "type": "string" } }, "additionalProperties": false + } + }, + "config": { + "type": "object", + "properties": { + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + } }, - "description": { - "type": "string" - }, - "docs": { - "type": "object", - "required": ["show"], - "properties": { - "show": { - "type": "boolean" - } + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "docs": { + "type": "object", + "required": ["show"], + "properties": { + "show": { + "type": "boolean" } } } } - }, - "exposures": { - "type": "array", - "items": { - "type": "object", - "required": ["depends_on", "name", "owner", "type"], - "$comment": "NB: depends_on is not strictly required, but is _expected_ according to the documentation", - "properties": { - "name": { + } + }, + "exposures": { + "type": "array", + "items": { + "type": "object", + "required": ["depends_on", "name", "owner", "type"], + "$comment": "NB: depends_on is not strictly required, but is _expected_ according to the documentation", + "properties": { + "name": { + "type": "string" + }, + "label": { + "type": "string", + "$comment": "Added in dbt Core v1.3" + }, + "type": { + "type": "string", + "enum": ["dashboard", "notebook", "analysis", "ml", "application"] + }, + "depends_on": { + "type": "array", + "items": { "type": "string" - }, - "label": { - "type": "string", - "$comment": "Added in dbt Core v1.3" - }, - "type": { - "type": "string", - "enum": ["dashboard", "notebook", "analysis", "ml", "application"] - }, - "depends_on": { - "type": "array", - "items": { + } + }, + "description": { + "type": "string" + }, + "maturity": { + "type": "string", + "enum": ["high", "medium", "low"] + }, + "meta": { + "type": "object" + }, + "owner": { + "type": "object", + "required": ["email"], + "properties": { + "name": { + "type": "string" + }, + "email": { "type": "string" } }, - "description": { - "type": "string" - }, - "maturity": { - "type": "string", - "enum": ["high", "medium", "low"] - }, - "meta": { - "type": "object" + "additionalProperties": false + }, + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "url": { + "type": "string" + } + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "owner"], + "properties": { + "name": { + "type": "string" + }, + "owner": { + "type": "object", + "minProperties": 1, + "properties": { + "name": { + "type": "string" + }, + "email": { + "type": "string" + } }, - "owner": { + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "macros": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "arguments": { + "type": "array", + "items": { "type": "object", - "required": ["email"], + "required": ["name"], "properties": { "name": { "type": "string" }, - "email": { + "type": { + "type": "string" + }, + "description": { "type": "string" } }, "additionalProperties": false - }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "url": { - "type": "string" + } + }, + "description": { + "type": "string" + }, + "docs": { + "type": "object", + "properties": { + "show": { + "type": "boolean" + } } } - } - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "required": ["name", "owner"], + }, + "additionalProperties": false + } + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "label", "calculation_method", "expression"], + "if": { "properties": { - "name": { - "type": "string" - }, - "owner": { + "calculation_method": { + "const": "derived" + } + } + }, + "then": { + "required": ["name", "label", "calculation_method", "expression"] + }, + "else": { + "required": [ + "name", + "model", + "label", + "calculation_method", + "expression" + ] + }, + "properties": { + "config": { + "type": "object", + "properties": { + "enabled": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "treat_null_values_as_zero": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "group": { + "type": "string" + } + } + }, + "calculation_method": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dimensions": { + "$ref": "#/$defs/array_of_strings" + }, + "expression": { + "type": "string" + }, + "filters": { + "type": "array", + "items": { "type": "object", - "minProperties": 1, + "required": ["field", "operator", "value"], "properties": { - "name": { + "field": { "type": "string" }, - "email": { + "operator": { + "type": "string" + }, + "value": { "type": "string" } }, "additionalProperties": false } }, - "additionalProperties": false - } - }, - "macros": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "arguments": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "description": { - "type": "string" - }, - "docs": { - "type": "object", - "properties": { - "show": { - "type": "boolean" - } + "label": { + "type": "string" + }, + "meta": { + "type": "object" + }, + "model": { + "type": "string", + "default": "ref('')" + }, + "name": { + "type": "string" + }, + "time_grains": { + "$ref": "#/$defs/array_of_strings" + }, + "timestamp": { + "type": "string" + }, + "window": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "period": { + "type": "string", + "enum": ["day", "week", "month", "year"] } } + } + }, + "additionalProperties": false + } + }, + "models": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "access": { + "type": "string", + "enum": ["private", "protected", "public"] + }, + "columns": { + "type": "array", + "items": { + "$ref": "#/$defs/column_properties" + } }, - "additionalProperties": false - } - }, - "metrics": { - "type": "array", - "items": { - "type": "object", - "required": ["name", "label", "calculation_method", "expression"], - "if": { + "config": { + "$ref": "#/$defs/model_configs" + }, + "constraints": { + "$ref": "#/$defs/constraints" + }, + "description": { + "type": "string" + }, + "docs": { + "type": "object", "properties": { - "calculation_method": { - "const": "derived" + "show": { + "type": "boolean" } } }, - "then": { - "required": ["name", "label", "calculation_method", "expression"] + "group": { + "type": "string" }, - "else": { - "required": [ - "name", - "model", - "label", - "calculation_method", - "expression" - ] + "latest_version": { + "type": "number" }, - "properties": { - "config": { - "type": "object", - "properties": { - "enabled": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "treat_null_values_as_zero": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "group": { - "type": "string" - } - } - }, - "calculation_method": { - "type": "string" - }, - "description": { - "type": "string" - }, - "dimensions": { - "$ref": "#/$defs/array_of_strings" - }, - "expression": { - "type": "string" - }, - "filters": { - "type": "array", - "items": { - "type": "object", - "required": ["field", "operator", "value"], - "properties": { - "field": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "label": { - "type": "string" - }, - "meta": { - "type": "object" - }, - "model": { - "type": "string", - "default": "ref('')" - }, - "name": { - "type": "string" - }, - "time_grains": { - "$ref": "#/$defs/array_of_strings" - }, - "timestamp": { - "type": "string" - }, - "window": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "period": { - "type": "string", - "enum": [ "day", "week", "month", "year"] - } - } + "meta": { + "type": "object" + }, + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" } }, - "additionalProperties": false - } - }, - "models": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "access": { - "type": "string", - "enum": ["private", "protected", "public"] - }, - "columns": { - "type": "array", - "items": { - "$ref": "#/$defs/column_properties" - } - }, - "config": { - "$ref": "#/$defs/model_configs" - }, - "constraints": { - "$ref": "#/$defs/constraints" - }, - "description": { - "type": "string" - }, - "docs": { + "versions": { + "type": "array", + "items": { "type": "object", + "required": ["v"], "properties": { - "show": { - "type": "boolean" - } - } - }, - "group": { - "type": "string" - }, - "latest_version": { - "type": "number" - }, - "meta": { - "type": "object" - }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" - } - }, - "versions": { - "type": "array", - "items": { - "type": "object", - "required": ["v"], - "properties": { - "v": { - "type": "number" - }, - "config": { - "$ref": "#/$defs/model_configs" - }, - "columns": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/$defs/include_exclude" - }, - { - "$ref": "#/$defs/column_properties" - } - ] - } + "v": { + "type": "number" + }, + "config": { + "$ref": "#/$defs/model_configs" + }, + "columns": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/$defs/include_exclude" + }, + { + "$ref": "#/$defs/column_properties" + } + ] } } } } + } + }, + "additionalProperties": false + } + }, + "seeds": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" }, - "additionalProperties": false - } - }, - "seeds": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "columns": { - "type": "array", - "items": { - "$ref": "#/$defs/column_properties" + "columns": { + "type": "array", + "items": { + "$ref": "#/$defs/column_properties" + } + }, + "config": { + "type": "object", + "properties": { + "column_types": { + "type": "object" + }, + "copy_grants": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "database": { + "type": "string" + }, + "enabled": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "grants": { + "$ref": "#/$defs/grants" + }, + "quote_columns": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "schema": { + "type": "string" } - }, - "config": { - "type": "object", - "properties": { - "column_types": { - "type": "object" - }, - "copy_grants": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "database": { - "type": "string" - }, - "enabled": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "grants": { - "$ref": "#/$defs/grants" - }, - "quote_columns": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "schema": { - "type": "string" - } + } + }, + "description": { + "type": "string" + }, + "docs": { + "type": "object", + "properties": { + "show": { + "type": "boolean" } - }, - "description": { - "type": "string" - }, - "docs": { - "type": "object", - "properties": { - "show": { - "type": "boolean" - } + } + }, + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" + } + } + }, + "additionalProperties": false + } + }, + "snapshots": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "columns": { + "type": "array", + "items": { + "$ref": "#/$defs/column_properties" + } + }, + "config": { + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "check_cols": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "enabled": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "grants": { + "$ref": "#/$defs/grants" + }, + "persist_docs": { + "$ref": "#/$defs/persist_docs_config" + }, + "post-hook": { + "$ref": "#/$defs/array_of_strings" + }, + "pre-hook": { + "$ref": "#/$defs/array_of_strings" + }, + "quote_columns": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "strategy": { + "type": "string" + }, + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "target_database": { + "type": "string" + }, + "target_schema": { + "type": "string" + }, + "unique_key": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "updated_at": { + "type": "string" } - }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" + } + }, + "description": { + "type": "string" + }, + "docs": { + "type": "object", + "properties": { + "show": { + "type": "boolean" } } }, - "additionalProperties": false - } - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string" - }, - "columns": { - "type": "array", - "items": { - "$ref": "#/$defs/column_properties" + "meta": { + "type": "object" + }, + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" + } + } + }, + "additionalProperties": false + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string", + "description": "How you will identify the schema in {{ source() }} calls. Unless `schema` is also set, this will be the name of the schema in the database." + }, + "config": { + "type": "object" + }, + "database": { + "type": "string" + }, + "description": { + "type": "string" + }, + "freshness": { + "$ref": "#/$defs/freshness_definition" + }, + "loaded_at_field": { + "type": "string" + }, + "loader": { + "type": "string" + }, + "meta": { + "type": "object" + }, + "overrides": { + "title": "Package to Override", + "type": "string", + "description": "The name of another package installed in your project. If that package has a source with the same name as this one, its properties will be applied on top of the base properties of the overridden source. https://docs.getdbt.com/reference/resource-properties/overrides" + }, + "quoting": { + "type": "object", + "properties": { + "database": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "identifier": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "schema": { + "$ref": "#/$defs/boolean_or_jinja_string" } }, - "config": { + "additionalProperties": false + }, + "schema": { + "type": "string", + "description": "The schema name as stored in the database. Only needed if you want to use a different `name` than what exists in the database (otherwise `name` is used by default)" + }, + "tables": { + "type": "array", + "items": { "type": "object", + "required": ["name"], "properties": { - "alias": { - "type": "string" - }, - "check_cols": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "enabled": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "grants": { - "$ref": "#/$defs/grants" - }, - "persist_docs": { - "$ref": "#/$defs/persist_docs_config" + "name": { + "title": "Name", + "type": "string", + "description": "How you will identify the table in {{ source() }} calls. Unless `identifier` is also set, this will be the name of the table in the database." }, - "post-hook": { - "$ref": "#/$defs/array_of_strings" + "columns": { + "type": "array", + "items": { + "$ref": "#/$defs/column_properties" + } }, - "pre-hook": { - "$ref": "#/$defs/array_of_strings" + "description": { + "type": "string" }, - "quote_columns": { - "$ref": "#/$defs/boolean_or_jinja_string" + "external": { + "type": "object" }, - "strategy": { - "type": "string" + "freshness": { + "$ref": "#/$defs/freshness_definition" }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" + "identifier": { + "title": "Identifier", + "type": "string", + "description": "The table name as stored in the database. Only needed if you want to give the source a different name than what exists in the database (otherwise `name` is used by default)" }, - "target_database": { - "type": "string" + "loaded_at_field": { + "type": "string", + "description": "Which column to check during data freshness tests. Only needed if the table has a different loaded_at_field to the one defined on the source overall." }, - "target_schema": { - "type": "string" + "loader": { + "type": "string" }, - "unique_key": { - "$ref": "#/$defs/string_or_array_of_strings" + "meta": { + "type": "object" }, - "updated_at": { - "type": "string" - } - } - }, - "description": { - "type": "string" - }, - "docs": { - "type": "object", - "properties": { - "show": { - "type": "boolean" - } - } - }, - "meta": { - "type": "object" - }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" - } - } - }, - "additionalProperties": false - } - }, - "sources": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string", - "description": "How you will identify the schema in {{ source() }} calls. Unless `schema` is also set, this will be the name of the schema in the database." - }, - "config": { - "type": "object" - }, - "database": { - "type": "string" - }, - "description": { - "type": "string" - }, - "freshness": { - "$ref": "#/$defs/freshness_definition" - }, - "loaded_at_field": { - "type": "string" - }, - "loader": { - "type": "string" - }, - "meta": { - "type": "object" - }, - "overrides": { - "title": "Package to Override", - "type": "string", - "description": "The name of another package installed in your project. If that package has a source with the same name as this one, its properties will be applied on top of the base properties of the overridden source. https://docs.getdbt.com/reference/resource-properties/overrides" - }, - "quoting": { - "type": "object", - "properties": { - "database": { - "$ref": "#/$defs/boolean_or_jinja_string" + "quoting": { + "type": "object", + "properties": { + "database": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "identifier": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "schema": { + "$ref": "#/$defs/boolean_or_jinja_string" + } + }, + "additionalProperties": false }, - "identifier": { - "$ref": "#/$defs/boolean_or_jinja_string" + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" }, - "schema": { - "$ref": "#/$defs/boolean_or_jinja_string" + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" + } } }, "additionalProperties": false - }, - "schema": { - "type": "string", - "description": "The schema name as stored in the database. Only needed if you want to use a different `name` than what exists in the database (otherwise `name` is used by default)" - }, - "tables": { - "type": "array", - "items": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "title": "Name", - "type": "string", - "description": "How you will identify the table in {{ source() }} calls. Unless `identifier` is also set, this will be the name of the table in the database." - }, - "columns": { - "type": "array", - "items": { - "$ref": "#/$defs/column_properties" - } - }, - "description": { - "type": "string" - }, - "external": { - "type": "object" - }, - "freshness": { - "$ref": "#/$defs/freshness_definition" - }, - "identifier": { - "title": "Identifier", - "type": "string", - "description": "The table name as stored in the database. Only needed if you want to give the source a different name than what exists in the database (otherwise `name` is used by default)" - }, - "loaded_at_field": { - "type": "string", - "description": "Which column to check during data freshness tests. Only needed if the table has a different loaded_at_field to the one defined on the source overall." - }, - "loader": { - "type": "string" - }, - "meta": { - "type": "object" - }, - "quoting": { - "type": "object", - "properties": { - "database": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "identifier": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "schema": { - "$ref": "#/$defs/boolean_or_jinja_string" - } - }, - "additionalProperties": false - }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" - } - } - }, - "additionalProperties": false - } - }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" - } + } + }, + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" } } } } + } + }, + "additionalProperties": false, + "$defs": { + "array_of_strings": { + "type": "array", + "items": { + "type": "string" + } }, - "additionalProperties": false, - "$defs": { - "array_of_strings": { - "type": "array", - "items": { - "type": "string" + "boolean_or_jinja_string": { + "oneOf": [ + { + "$ref": "#/$defs/jinja_string" + }, + { + "type": "boolean" } - }, - "boolean_or_jinja_string": { - "oneOf": [ - { - "$ref": "#/$defs/jinja_string" - }, - { - "type": "boolean" + ], + "additionalProperties": false + }, + "column_properties": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "constraints": { + "$ref": "#/$defs/constraints" + }, + "data_type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "meta": { + "type": "object" + }, + "policy_tags": { + "title": "Policy tags", + "type": "array", + "description": "Configurations, specific to BigQuery adapter, used to set policy tags on specific columns, enabling column-level security. Only relevant when `persist_docs.columns` is true.", + "items": { + "type": "string" } - ], - "additionalProperties": false + }, + "quote": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "tests": { + "type": "array", + "items": { + "$ref": "#/$defs/tests" + } + }, + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + } }, - "column_properties": { + "additionalProperties": false, + "uniqueItems": true + }, + "constraints": { + "type": "array", + "items": { "type": "object", - "required": ["name"], + "required": ["type"], "properties": { - "name": { - "type": "string" - }, - "constraints": { - "$ref": "#/$defs/constraints" + "columns": { + "$ref": "#/$defs/string_or_array_of_strings" }, - "data_type": { + "expression": { "type": "string" }, - "description": { + "name": { "type": "string" }, - "meta": { - "type": "object" - }, - "policy_tags": { - "title": "Policy tags", - "type": "array", - "description": "Configurations, specific to BigQuery adapter, used to set policy tags on specific columns, enabling column-level security. Only relevant when `persist_docs.columns` is true.", - "items": { - "type": "string" - } + "type": { + "type": "string" }, - "quote": { + "warn_unenforced": { "$ref": "#/$defs/boolean_or_jinja_string" }, - "tests": { - "type": "array", - "items": { - "$ref": "#/$defs/tests" - } - }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" + "warn_unsupported": { + "$ref": "#/$defs/boolean_or_jinja_string" } + } + } + }, + "freshness_definition": { + "default": { + "warn_after": { + "count": 1, + "period": "day" }, - "additionalProperties": false, - "uniqueItems": true + "error_after": { + "count": 2, + "period": "day" + } }, - "constraints": { - "type": "array", - "items": { + "oneOf": [ + { "type": "object", - "required": ["type"], "properties": { - "columns": { - "$ref": "#/$defs/string_or_array_of_strings" + "error_after": { + "$ref": "#/$defs/freshness_rules" }, - "expression": { + "filter": { "type": "string" }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "warn_unenforced": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "warn_unsupported": { - "$ref": "#/$defs/boolean_or_jinja_string" + "warn_after": { + "$ref": "#/$defs/freshness_rules" } - } + }, + "additionalProperties": false + }, + { + "const": null + } + ] + }, + "freshness_rules": { + "type": "object", + "required": ["count", "period"], + "properties": { + "count": { + "$ref": "#/$defs/number_or_jinja_string" + }, + "period": { + "type": "string", + "enum": ["minute", "hour", "day"] + } + }, + "additionalProperties": false + }, + "grants": { + "type": "object", + "description": "grant config. each key is a database permission and the value is the grantee of that permission", + "patternProperties": { + ".*": { + "$ref": "#/$defs/string_or_array_of_strings" } }, - "freshness_definition": { - "default": { - "warn_after": { - "count": 1, - "period": "day" - }, - "error_after": { - "count": 2, - "period": "day" + "additionalProperties": false + }, + "include_exclude": { + "type": "object", + "properties": { + "include": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "exclude": { + "$ref": "#/$defs/string_or_array_of_strings" + } + } + }, + "jinja_string": { + "type": "string", + "pattern": "\\{\\{.*\\}\\}" + }, + "model_configs": { + "type": "object", + "properties": { + "contract": { + "type": "object", + "properties": { + "enforced": { + "$ref": "#/$defs/boolean_or_jinja_string" + } } }, - "oneOf": [ - { + "file_format": { + "type": "string" + }, + "grant_access_to": { + "title": "Authorized views", + "type": "array", + "description": "Configuration, specific to BigQuery adapter, used to setup authorized views.", + "items": { "type": "object", + "required": ["database", "project"], "properties": { - "error_after": { - "$ref": "#/$defs/freshness_rules" - }, - "filter": { + "database": { "type": "string" }, - "warn_after": { - "$ref": "#/$defs/freshness_rules" + "project": { + "type": "string" } }, "additionalProperties": false - }, - { - "const": null - } - ] - }, - "freshness_rules": { - "type": "object", - "required": ["count", "period"], - "properties": { - "count": { - "$ref": "#/$defs/number_or_jinja_string" - }, - "period": { - "type": "string", - "enum": ["minute", "hour", "day"] } }, - "additionalProperties": false - }, - "grants": { - "type": "object", - "description": "flexible grant config. accepts any string key, expects a string or list of strings value", - "patternProperties": { - ".*": { - "$ref": "#/$defs/string_or_array_of_strings" + "grants": { + "$ref": "#/$defs/grants" + }, + "hours_to_expiration": { + "type": "number", + "description": "Configuration specific to BigQuery adapter used to set an expiration delay (in hours) to a table." + }, + "kms_key_name": { + "type": "string", + "description": "Configuration of the KMS key name, specific to BigQuery adapter.", + "pattern": "projects/[a-zA-Z0-9_-]*/locations/[a-zA-Z0-9_-]*/keyRings/.*/cryptoKeys/.*" + }, + "labels": { + "title": "Label configs", + "type": "object", + "description": "Configuration specific to BigQuery adapter used to add labels and tags to tables/views created by dbt.", + "patternProperties": { + "^[a-z][a-z0-9_-]{0,62}$": { + "type": "string", + "pattern": "^[a-z0-9_-]{0,63}$" } }, "additionalProperties": false - }, - "include_exclude": { - "type": "object", - "properties": { - "include": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "exclude": { - "$ref": "#/$defs/string_or_array_of_strings" - } + }, + "location": { + "type": "string" + }, + "materialized": { + "type": "string" + }, + "sql_header": { + "type": "string" + } + } + }, + "number_or_jinja_string": { + "oneOf": [ + { + "$ref": "#/$defs/jinja_string" + }, + { + "type": "number" + } + ], + "additionalProperties": false + }, + "persist_docs_config": { + "title": "Persist docs config", + "type": "object", + "description": "Configurations for the persistence of the dbt documentation.", + "properties": { + "columns": { + "$ref": "#/$defs/boolean_or_jinja_string", + "default": true + }, + "relation": { + "$ref": "#/$defs/boolean_or_jinja_string", + "default": true } }, - "jinja_string": { - "type": "string", - "pattern": "\\{\\{.*\\}\\}" - }, - "model_configs": { - "type": "object", - "properties": { - "contract": { - "type": "object", - "properties": { - "enforced": { - "$ref": "#/$defs/boolean_or_jinja_string" - } + "additionalProperties": false + }, + "string_or_array_of_strings": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/array_of_strings" + } + ] + }, + "test_configs": { + "title": "Test configs", + "type": "object", + "description": "Configurations set here will override configs set in dbt_project.yml.", + "properties": { + "alias": { + "type": "string", + "description": "Only relevant when `store_failures` is true" + }, + "database": { + "type": "string", + "description": "Only relevant when `store_failures` is true" + }, + "enabled": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "error_if": { + "type": "string" + }, + "fail_calc": { + "type": "string" + }, + "limit": { + "type": "number" + }, + "schema": { + "type": "string", + "description": "Only relevant when `store_failures` is true" + }, + "severity": { + "oneOf": [ + { + "$ref": "#/$defs/jinja_string" + }, + { + "type": "string", + "enum": ["warn", "error"] } - }, - "file_format": { - "type": "string" - }, - "grant_access_to": { - "title": "Authorized views", - "type": "array", - "description": "Configuration, specific to BigQuery adapter, used to setup authorized views.", - "items": { + ] + }, + "store_failures": { + "$ref": "#/$defs/boolean_or_jinja_string" + }, + "tags": { + "$ref": "#/$defs/string_or_array_of_strings" + }, + "warn_if": { + "type": "string" + } + } + }, + "tests": { + "anyOf": [ + { + "type": "string" + }, + { + "title": "Relationships Test", + "type": "object", + "properties": { + "relationships": { "type": "object", - "required": ["database", "project"], + "required": ["to", "field"], "properties": { - "database": { + "name": { "type": "string" }, - "project": { + "config": { + "$ref": "#/$defs/test_configs" + }, + "field": { + "title": "Relationships: Field", + "type": "string", + "default": "", + "description": "The foreign key column" + }, + "to": { + "type": "string", + "default": "ref('')", + "examples": [ + "ref('parent_model')", + "source('parent_schema', 'parent_table')" + ] + }, + "where": { "type": "string" } - }, - "additionalProperties": false - } - }, - "grants": { - "$ref": "#/$defs/grants" - }, - "hours_to_expiration": { - "type": "number", - "description": "Configuration specific to BigQuery adapter used to set an expiration delay (in hours) to a table." - }, - "kms_key_name": { - "type": "string", - "description": "Configuration of the KMS key name, specific to BigQuery adapter.", - "pattern": "projects/[a-zA-Z0-9_-]*/locations/[a-zA-Z0-9_-]*/keyRings/.*/cryptoKeys/.*" - }, - "labels": { - "title": "Label configs", - "type": "object", - "description": "Configuration specific to BigQuery adapter used to add labels and tags to tables/views created by dbt.", - "patternProperties": { - "^[a-z][a-z0-9_-]{0,62}$": { - "type": "string", - "pattern": "^[a-z0-9_-]{0,63}$" } - }, - "additionalProperties": false - }, - "location": { - "type": "string" - }, - "materialized": { - "type": "string" - }, - "sql_header": { - "type": "string" - } - } - }, - "number_or_jinja_string": { - "oneOf": [ - { - "$ref": "#/$defs/jinja_string" - }, - { - "type": "number" - } - ], - "additionalProperties": false - }, - "persist_docs_config": { - "title": "Persist docs config", - "type": "object", - "description": "Configurations for the persistence of the dbt documentation.", - "properties": { - "columns": { - "$ref": "#/$defs/boolean_or_jinja_string", - "default": true - }, - "relation": { - "$ref": "#/$defs/boolean_or_jinja_string", - "default": true + } } }, - "additionalProperties": false - }, - "string_or_array_of_strings": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/array_of_strings" - } - ] - }, - "test_configs": { - "title": "Test configs", - "type": "object", - "description": "Configurations set here will override configs set in dbt_project.yml.", - "properties": { - "alias": { - "type": "string", - "description": "Only relevant when `store_failures` is true" - }, - "database": { - "type": "string", - "description": "Only relevant when `store_failures` is true" - }, - "enabled": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "error_if": { - "type": "string" - }, - "fail_calc": { - "type": "string" - }, - "limit": { - "type": "number" - }, - "schema": { - "type": "string", - "description": "Only relevant when `store_failures` is true" - }, - "severity": { - "oneOf": [ - { - "$ref": "#/$defs/jinja_string" - }, - { - "type": "string", - "enum": [ - "warn", - "error" - ] - } - ] - }, - "store_failures": { - "$ref": "#/$defs/boolean_or_jinja_string" - }, - "tags": { - "$ref": "#/$defs/string_or_array_of_strings" - }, - "warn_if": { - "type": "string" - } - } - }, - "tests": { - "anyOf": [ - { - "type": "string" - }, - { - "title": "Relationships Test", - "type": "object", - "properties": { - "relationships": { - "type": "object", - "required": ["to", "field"], - "properties": { - "name": { - "type": "string" - }, - "config": { - "$ref": "#/$defs/test_configs" - }, - "field": { - "title": "Relationships: Field", - "type": "string", - "default": "", - "description": "The foreign key column" - }, - "to": { - "type": "string", - "default": "ref('')", - "examples": [ - "ref('parent_model')", - "source('parent_schema', 'parent_table')" - ] - }, - "where": { - "type": "string" - } - } - } - } - }, - { - "title": "Accepted Values Test", - "type": "object", - "properties": { - "accepted_values": { - "type": "object", - "required": ["values"], - "properties": { - "name": { - "type": "string" - }, - "config": { - "$ref": "#/$defs/test_configs" - }, - "quote": { - "type": "boolean" - }, - "values": { - "type": "array", - "items": { - "type": "string" - } - }, - "where": { + { + "title": "Accepted Values Test", + "type": "object", + "properties": { + "accepted_values": { + "type": "object", + "required": ["values"], + "properties": { + "name": { + "type": "string" + }, + "config": { + "$ref": "#/$defs/test_configs" + }, + "quote": { + "type": "boolean" + }, + "values": { + "type": "array", + "items": { "type": "string" } + }, + "where": { + "type": "string" } } } - }, - { - "title": "Not Null Test", - "type": "object", - "properties": { - "not_null": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "config": { - "$ref": "#/$defs/test_configs" - }, - "where": { - "type": "string" - } + } + }, + { + "title": "Not Null Test", + "type": "object", + "properties": { + "not_null": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "config": { + "$ref": "#/$defs/test_configs" + }, + "where": { + "type": "string" } } } - }, - { - "title": "Unique Test", - "type": "object", - "properties": { - "unique": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "config": { - "$ref": "#/$defs/test_configs" - }, - "where": { - "type": "string" - } + } + }, + { + "title": "Unique Test", + "type": "object", + "properties": { + "unique": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "config": { + "$ref": "#/$defs/test_configs" + }, + "where": { + "type": "string" } } } } - ] - } + } + ] } + } }