{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/dbt-project/latest.json",
  "title": "dbt_project",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/dbt-labs/dbt-jsonschema/main/schemas/latest/dbt_project-latest.json",
    "sourceSha256": "a27ea5930dd964190ac0b4f9e70cc56aadd0c0eee70759ef340cf1a9c833eba2",
    "fileMatch": [
      "dbt_project.yaml",
      "dbt_project.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "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"
    }
  },
  "$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",
      "additionalProperties": false,
      "patternProperties": {
        ".*": {
          "$ref": "#/$defs/string_or_array_of_strings"
        }
      }
    },
    "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",
      "additionalProperties": false,
      "patternProperties": {
        "^[a-z][a-z0-9_-]{0,63}$": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-z0-9_-]{0,64}$"
            },
            {
              "$ref": "#/$defs/jinja_string"
            }
          ]
        }
      }
    },
    "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"
          }
        ]
      },
      "type": "object"
    },
    "updated_at": {
      "type": "string"
    },
    "warn_if": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "name"
  ]
}
