{ "title": "dbt_project", "type": "object", "required": [ "name" ], "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "version": { "type": "string" }, "name": { "type": "string" }, "analysis-paths": { "$ref": "#/$defs/array_of_strings" }, "asset-paths": { "$ref": "#/$defs/array_of_strings" }, "clean-targets": { "$ref": "#/$defs/array_of_strings" }, "config-version": { "type": "integer", "default": 2 }, "data_tests": { "$ref": "#/$defs/data_test_configs" }, "dbt-cloud": { "type": "object", "properties": { "project-id": { "type": "number" } }, "additionalProperties": true }, "dispatch": { "type": "array", "items": { "type": "object", "required": [ "macro_namespace", "search_order" ], "properties": { "macro_namespace": { "type": "string" }, "search_order": { "$ref": "#/$defs/array_of_strings" } }, "additionalProperties": false } }, "docs-paths": { "$ref": "#/$defs/array_of_strings" }, "flags": { "type": "object", "properties": { "cache_selected_only": { "type": "boolean" }, "debug": { "type": "boolean" }, "fail_fast": { "type": "boolean" }, "indirect_selection": { "type": "string" }, "log_format": { "type": "string" }, "log_format_file": { "type": "string" }, "log_level": { "type": "string" }, "log_level_file": { "type": "string" }, "partial_parse": { "type": "boolean" }, "populate_cache": { "type": "boolean" }, "printer_width": { "type": "integer" }, "require_explicit_package_overrides_for_builtin_materializations": { "type": "boolean" }, "require_resource_names_without_spaces": { "type": "boolean" }, "send_anonymous_usage_stats": { "type": "boolean" }, "source_freshness_run_project_hooks": { "type": "boolean" }, "static_parser": { "type": "boolean" }, "use_colors": { "type": "boolean" }, "use_colors_file": { "type": "boolean" }, "use_experimental_parser": { "type": "boolean" }, "version_check": { "type": "boolean" }, "warn_error": { "type": "boolean" }, "warn_error_options": { "type": "object" }, "write_json": { "type": "boolean" } } }, "log-path": { "type": "string" }, "macro-paths": { "$ref": "#/$defs/array_of_strings" }, "model-paths": { "$ref": "#/$defs/array_of_strings" }, "models": { "$ref": "#/$defs/model_configs" }, "on-run-end": { "anyOf": [ { "$ref": "#/$defs/array_of_strings" }, { "type": "string" } ] }, "on-run-start": { "anyOf": [ { "$ref": "#/$defs/array_of_strings" }, { "type": "string" } ] }, "packages-install-path": { "type": "string" }, "profile": { "type": "string" }, "query-comment": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "append": { "$ref": "#/$defs/boolean_or_jinja_string" }, "comment": { "type": "string" }, "job-label": { "$ref": "#/$defs/boolean_or_jinja_string" } }, "additionalProperties": false } ] }, "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" } } }, "require-dbt-version": { "$ref": "#/$defs/string_or_array_of_strings" }, "seed-paths": { "$ref": "#/$defs/array_of_strings" }, "seeds": { "$ref": "#/$defs/seed_configs" }, "semantic-models": { "$ref": "#/$defs/semantic_model_configs" }, "snapshot-paths": { "$ref": "#/$defs/array_of_strings" }, "snapshots": { "$ref": "#/$defs/snapshot_configs" }, "sources": { "$ref": "#/$defs/source_configs" }, "target-path": { "type": "string" }, "test-paths": { "$ref": "#/$defs/array_of_strings" }, "tests": { "$ref": "#/$defs/data_test_configs" }, "unit_tests": { "$ref": "#/$defs/unit_test_configs" }, "vars": { "type": "object" } }, "additionalProperties": false, "$defs": { "access": { "type": "string", "enum": [ "private", "protected", "public" ] }, "alias": { "type": "string" }, "array_of_strings": { "type": "array", "items": { "type": "string" } }, "auto_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "backup": { "$ref": "#/$defs/boolean_or_jinja_string" }, "boolean_or_jinja_string": { "oneOf": [ { "$ref": "#/$defs/jinja_string" }, { "type": "boolean" } ] }, "column_types": { "type": "object", "patternProperties": { "": { "type": "string" } } }, "contract": { "type": "object", "required": [ "enforced" ], "properties": { "enforced": { "$ref": "#/$defs/boolean_or_jinja_string", "default": "true" } } }, "data_test_configs": { "title": "Data test configs", "description": "Configurations set in the dbt_project.yml file will apply to all tests that don't have a more specific configuration set.", "type": "object", "properties": { "+alias": { "$ref": "#/$defs/alias" }, "+database": { "$ref": "#/$defs/database" }, "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+error_if": { "$ref": "#/$defs/error_if" }, "+fail_calc": { "$ref": "#/$defs/fail_calc" }, "+group": { "$ref": "#/$defs/group" }, "+limit": { "$ref": "#/$defs/limit" }, "+meta": { "$ref": "#/$defs/meta" }, "+schema": { "$ref": "#/$defs/schema" }, "+severity": { "$ref": "#/$defs/severity" }, "+store_failures": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+tags": { "$ref": "#/$defs/tags" }, "+warn_if": { "$ref": "#/$defs/warn_if" }, "alias": { "$ref": "#/$defs/alias" }, "database": { "$ref": "#/$defs/database" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "error_if": { "$ref": "#/$defs/error_if" }, "fail_calc": { "$ref": "#/$defs/fail_calc" }, "group": { "$ref": "#/$defs/group" }, "limit": { "$ref": "#/$defs/limit" }, "meta": { "$ref": "#/$defs/meta" }, "schema": { "$ref": "#/$defs/schema" }, "severity": { "$ref": "#/$defs/severity" }, "store_failures": { "$ref": "#/$defs/boolean_or_jinja_string" }, "tags": { "$ref": "#/$defs/tags" }, "warn_if": { "$ref": "#/$defs/warn_if" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/data_test_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "database": { "type": "string" }, "docs_config": { "title": "Docs config", "description": "Configurations for the appearance of nodes in the dbt documentation.", "type": "object", "properties": { "node_color": { "description": "The color of the node on the DAG in the documentation. It must be an Hex code or a valid CSS color name.", "type": "string", "pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|[^#][a-zA-Z]*)$" }, "show": { "type": "boolean", "default": true } }, "additionalProperties": false }, "empty_directory": { "type": "null" }, "error_if": { "type": "string" }, "fail_calc": { "type": "string" }, "file_format": { "type": "string" }, "grant_access_to": { "title": "Authorized views", "description": "Configuration, specific to BigQuery adapter, used to setup authorized views.", "type": "array", "items": { "type": "object", "properties": { "dataset": { "type": "string" }, "project": { "type": "string" } }, "additionalProperties": false } }, "grants": { "description": "grant config. each key is a database permission and the value is the grantee of that permission", "type": "object", "patternProperties": { ".*": { "$ref": "#/$defs/string_or_array_of_strings" } }, "additionalProperties": false }, "group": { "type": "string" }, "hours_to_expiration": { "description": "Configuration specific to BigQuery adapter used to set an expiration delay (in hours) to a table.", "type": "number" }, "incremental_strategy": { "type": "string" }, "invalidate_hard_deletes": { "$ref": "#/$defs/boolean_or_jinja_string" }, "jinja_string": { "type": "string", "pattern": "\\{\\{.*\\}\\}" }, "kms_key_name": { "description": "Configuration, specific to BigQuery adapter, of the KMS key name used for data encryption.", "type": "string" }, "label_configs": { "title": "Label configs", "description": "Configurations specific to BigQuery adapter used to add labels and tags to tables & views created by dbt.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_-]{0,63}$": { "oneOf": [ { "type": "string", "pattern": "^[a-z0-9_-]{0,64}$" }, { "$ref": "#/$defs/jinja_string" } ] } }, "additionalProperties": false }, "limit": { "type": "integer" }, "location": { "type": "string" }, "materialized": { "type": "string" }, "meta": { "type": "object" }, "model_configs": { "title": "Model configs", "description": "Configurations set in the dbt_project.yml file will apply to all models that don't have a more specific configuration set.", "type": "object", "properties": { "+access": { "$ref": "#/$defs/access" }, "+alias": { "$ref": "#/$defs/alias" }, "+auto_refresh": { "$ref": "#/$defs/auto_refresh" }, "+backup": { "$ref": "#/$defs/backup" }, "+bind": { "$ref": "#/$defs/boolean_or_jinja_string", "default": false }, "+contract": { "$ref": "#/$defs/contract" }, "+copy_grants": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+database": { "$ref": "#/$defs/database" }, "+docs": { "$ref": "#/$defs/docs_config" }, "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+file_format": { "$ref": "#/$defs/file_format" }, "+full_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+grant_access_to": { "$ref": "#/$defs/grant_access_to" }, "+grants": { "$ref": "#/$defs/grants" }, "+group": { "$ref": "#/$defs/group" }, "+hours_to_expiration": { "$ref": "#/$defs/hours_to_expiration" }, "+incremental_strategy": { "$ref": "#/$defs/incremental_strategy" }, "+kms_key_name": { "$ref": "#/$defs/kms_key_name" }, "+labels": { "$ref": "#/$defs/label_configs" }, "+location": { "$ref": "#/$defs/location" }, "+materialized": { "$ref": "#/$defs/materialized" }, "+meta": { "$ref": "#/$defs/meta" }, "+on_configuration_change": { "$ref": "#/$defs/on_configuration_change" }, "+on_schema_change": { "$ref": "#/$defs/on_schema_change" }, "+persist_docs": { "$ref": "#/$defs/persist_docs_config" }, "+post-hook": { "$ref": "#/$defs/array_of_strings" }, "+pre-hook": { "$ref": "#/$defs/array_of_strings" }, "+schema": { "$ref": "#/$defs/schema" }, "+secure": { "$ref": "#/$defs/boolean_or_jinja_string", "default": false }, "+snowflake_warehouse": { "$ref": "#/$defs/snowflake_warehouse" }, "+sql_header": { "$ref": "#/$defs/sql_header" }, "+tags": { "$ref": "#/$defs/tags" }, "+target_lag": { "$ref": "#/$defs/target_lag" }, "+tblproperties": { "$ref": "#/$defs/tblproperties" }, "+transient": { "$ref": "#/$defs/boolean_or_jinja_string" }, "access": { "$ref": "#/$defs/access" }, "alias": { "$ref": "#/$defs/alias" }, "auto_refresh": { "$ref": "#/$defs/auto_refresh" }, "backup": { "$ref": "#/$defs/backup" }, "bind": { "$ref": "#/$defs/boolean_or_jinja_string", "default": false }, "contract": { "$ref": "#/$defs/contract" }, "copy_grants": { "$ref": "#/$defs/boolean_or_jinja_string" }, "database": { "$ref": "#/$defs/database" }, "docs": { "$ref": "#/$defs/docs_config" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "file_format": { "$ref": "#/$defs/file_format" }, "full_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "grant_access_to": { "$ref": "#/$defs/grant_access_to" }, "grants": { "$ref": "#/$defs/grants" }, "group": { "$ref": "#/$defs/group" }, "hours_to_expiration": { "$ref": "#/$defs/hours_to_expiration" }, "incremental_strategy": { "$ref": "#/$defs/incremental_strategy" }, "kms_key_name": { "$ref": "#/$defs/kms_key_name" }, "labels": { "$ref": "#/$defs/label_configs" }, "location": { "$ref": "#/$defs/location" }, "materialized": { "$ref": "#/$defs/materialized" }, "meta": { "$ref": "#/$defs/meta" }, "on_configuration_change": { "$ref": "#/$defs/on_configuration_change" }, "on_schema_change": { "$ref": "#/$defs/on_schema_change" }, "persist_docs": { "$ref": "#/$defs/persist_docs_config" }, "post-hook": { "$ref": "#/$defs/array_of_strings" }, "pre-hook": { "$ref": "#/$defs/array_of_strings" }, "schema": { "$ref": "#/$defs/schema" }, "secure": { "$ref": "#/$defs/boolean_or_jinja_string", "default": false }, "snowflake_warehouse": { "$ref": "#/$defs/snowflake_warehouse" }, "sql_header": { "$ref": "#/$defs/sql_header" }, "tags": { "$ref": "#/$defs/tags" }, "target_lag": { "$ref": "#/$defs/target_lag" }, "tblproperties": { "$ref": "#/$defs/tblproperties" }, "transient": { "$ref": "#/$defs/boolean_or_jinja_string" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/model_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "on_configuration_change": { "type": "string", "enum": [ "apply", "continue", "fail" ] }, "on_schema_change": { "type": "string", "enum": [ "append_new_columns", "fail", "ignore", "sync_all_columns" ] }, "persist_docs_config": { "title": "Persist docs config", "description": "Configurations for the persistence of the dbt documentation.", "type": "object", "properties": { "columns": { "$ref": "#/$defs/boolean_or_jinja_string", "default": true }, "relation": { "$ref": "#/$defs/boolean_or_jinja_string", "default": true } }, "additionalProperties": false }, "schema": { "type": [ "null", "string" ] }, "seed_configs": { "title": "Seed configs", "type": "object", "properties": { "+column_types": { "$ref": "#/$defs/column_types" }, "+copy_grants": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+database": { "$ref": "#/$defs/database" }, "+docs": { "$ref": "#/$defs/docs_config" }, "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+full_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+grants": { "$ref": "#/$defs/grants" }, "+group": { "$ref": "#/$defs/group" }, "+meta": { "$ref": "#/$defs/meta" }, "+persist_docs": { "$ref": "#/$defs/persist_docs_config" }, "+post-hook": { "$ref": "#/$defs/string_or_array_of_strings" }, "+pre-hook": { "$ref": "#/$defs/string_or_array_of_strings" }, "+quote_columns": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+schema": { "$ref": "#/$defs/schema" }, "+snowflake_warehouse": { "$ref": "#/$defs/snowflake_warehouse" }, "+tags": { "$ref": "#/$defs/tags" }, "+transient": { "$ref": "#/$defs/boolean_or_jinja_string" }, "column_types": { "$ref": "#/$defs/column_types" }, "copy_grants": { "$ref": "#/$defs/boolean_or_jinja_string" }, "database": { "$ref": "#/$defs/database" }, "docs": { "$ref": "#/$defs/docs_config" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "full_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "grants": { "$ref": "#/$defs/grants" }, "group": { "$ref": "#/$defs/group" }, "meta": { "$ref": "#/$defs/meta" }, "persist_docs": { "$ref": "#/$defs/persist_docs_config" }, "post-hook": { "$ref": "#/$defs/string_or_array_of_strings" }, "pre-hook": { "$ref": "#/$defs/string_or_array_of_strings" }, "quote_columns": { "$ref": "#/$defs/boolean_or_jinja_string" }, "schema": { "$ref": "#/$defs/schema" }, "snowflake_warehouse": { "$ref": "#/$defs/snowflake_warehouse" }, "tags": { "$ref": "#/$defs/tags" }, "transient": { "$ref": "#/$defs/boolean_or_jinja_string" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/seed_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "semantic_model_configs": { "title": "Semantic model configs", "description": "Configurations set in the dbt_project.yml file will apply to all semantic models that don't have a more specific configuration set.", "type": "object", "properties": { "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+group": { "$ref": "#/$defs/group" }, "+meta": { "$ref": "#/$defs/meta" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "group": { "$ref": "#/$defs/group" }, "meta": { "$ref": "#/$defs/meta" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/semantic_model_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "severity": { "oneOf": [ { "$ref": "#/$defs/jinja_string" }, { "type": "string", "enum": [ "error", "warn" ] } ] }, "snapshot_configs": { "title": "Snapshot configs", "type": "object", "properties": { "+alias": { "$ref": "#/$defs/alias" }, "+check_cols": { "$ref": "#/$defs/string_or_array_of_strings" }, "+database": { "$ref": "#/$defs/database" }, "+docs": { "$ref": "#/$defs/docs_config" }, "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+grants": { "$ref": "#/$defs/grants" }, "+group": { "$ref": "#/$defs/group" }, "+invalidate_hard_deletes": { "$ref": "#/$defs/invalidate_hard_deletes" }, "+meta": { "$ref": "#/$defs/meta" }, "+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": { "$ref": "#/$defs/strategy" }, "+tags": { "$ref": "#/$defs/tags" }, "+target_database": { "$ref": "#/$defs/target_database" }, "+target_schema": { "$ref": "#/$defs/target_schema" }, "+transient": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+unique_key": { "$ref": "#/$defs/string_or_array_of_strings" }, "+updated_at": { "$ref": "#/$defs/updated_at" }, "alias": { "$ref": "#/$defs/alias" }, "check_cols": { "$ref": "#/$defs/string_or_array_of_strings" }, "database": { "$ref": "#/$defs/database" }, "docs": { "$ref": "#/$defs/docs_config" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "grants": { "$ref": "#/$defs/grants" }, "group": { "$ref": "#/$defs/group" }, "invalidate_hard_deletes": { "$ref": "#/$defs/invalidate_hard_deletes" }, "meta": { "$ref": "#/$defs/meta" }, "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": { "$ref": "#/$defs/strategy" }, "tags": { "$ref": "#/$defs/tags" }, "target_database": { "$ref": "#/$defs/target_database" }, "target_schema": { "$ref": "#/$defs/target_schema" }, "transient": { "$ref": "#/$defs/boolean_or_jinja_string" }, "unique_key": { "$ref": "#/$defs/string_or_array_of_strings" }, "updated_at": { "$ref": "#/$defs/updated_at" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/snapshot_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "snowflake_warehouse": { "type": "string" }, "source_configs": { "title": "Source configs", "type": "object", "properties": { "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+meta": { "$ref": "#/$defs/meta" }, "+tags": { "$ref": "#/$defs/tags" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "meta": { "$ref": "#/$defs/meta" }, "tags": { "$ref": "#/$defs/tags" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/source_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "sql_header": { "type": "string" }, "strategy": { "type": "string" }, "string_or_array_of_strings": { "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/array_of_strings" } ] }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "target_database": { "type": "string" }, "target_lag": { "type": "string", "pattern": "^(?:downstream|\\d+\\s*(?:seconds|minutes|hours|days))$" }, "target_schema": { "type": "string" }, "tblproperties": { "type": "object" }, "unit_test_configs": { "properties": { "+enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "+meta": { "$ref": "#/$defs/meta" }, "+tags": { "$ref": "#/$defs/tags" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "meta": { "$ref": "#/$defs/meta" }, "tags": { "$ref": "#/$defs/tags" } }, "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/unit_test_configs" }, { "$ref": "#/$defs/empty_directory" } ] } }, "updated_at": { "type": "string" }, "warn_if": { "type": "string" } } }