{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/snowflake/refs/heads/main/json-schema/snowflake-warehouse-schema.json",
  "title": "Snowflake Warehouse",
  "description": "A Snowflake virtual warehouse provides the compute resources required to execute queries and perform DML operations. A warehouse can be started, suspended, resized, and configured for auto-suspend and auto-resume.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Identifier for the virtual warehouse. Must be unique within the account.",
      "minLength": 1,
      "maxLength": 255
    },
    "warehouse_type": {
      "type": "string",
      "description": "Type of warehouse specifying the compute resource architecture.",
      "enum": [
        "STANDARD",
        "SNOWPARK-OPTIMIZED"
      ],
      "default": "STANDARD"
    },
    "warehouse_size": {
      "type": "string",
      "description": "Size of the warehouse determining the number of compute resources per cluster.",
      "enum": [
        "XSMALL",
        "SMALL",
        "MEDIUM",
        "LARGE",
        "XLARGE",
        "XXLARGE",
        "XXXLARGE",
        "X4LARGE",
        "X5LARGE",
        "X6LARGE"
      ]
    },
    "wait_for_completion": {
      "type": "string",
      "description": "When resizing a warehouse, block the return of the ALTER WAREHOUSE command until the resize has finished provisioning all its compute resources.",
      "enum": [
        "true",
        "false"
      ]
    },
    "max_cluster_count": {
      "type": "integer",
      "description": "Specifies the maximum number of clusters for a multi-cluster warehouse. For a single-cluster warehouse, this value is 1.",
      "minimum": 1,
      "maximum": 10
    },
    "min_cluster_count": {
      "type": "integer",
      "description": "Specifies the minimum number of clusters for a multi-cluster warehouse. For a single-cluster warehouse, this value is 1.",
      "minimum": 1,
      "maximum": 10
    },
    "scaling_policy": {
      "type": "string",
      "description": "Scaling policy for a multi-cluster warehouse that determines when additional clusters are started or shut down.",
      "enum": [
        "STANDARD",
        "ECONOMY"
      ],
      "default": "STANDARD"
    },
    "auto_suspend": {
      "type": "integer",
      "description": "Number of seconds of inactivity after which a warehouse is automatically suspended. A value of 0 means the warehouse is never automatically suspended.",
      "minimum": 0
    },
    "auto_resume": {
      "type": "string",
      "description": "Specifies whether to automatically resume a warehouse when a SQL statement is submitted to it.",
      "enum": [
        "true",
        "false"
      ]
    },
    "initially_suspended": {
      "type": "string",
      "description": "Specifies whether the warehouse is created initially in the Suspended state.",
      "enum": [
        "true",
        "false"
      ]
    },
    "resource_monitor": {
      "type": "string",
      "description": "Specifies the name of a resource monitor that is explicitly assigned to the warehouse. When a resource monitor is explicitly assigned, the monitor controls the monthly credits used by the warehouse."
    },
    "comment": {
      "type": "string",
      "description": "Specifies a comment for the warehouse."
    },
    "enable_query_acceleration": {
      "type": "string",
      "description": "Specifies whether to enable the query acceleration service for queries that rely on this warehouse for compute resources.",
      "enum": [
        "true",
        "false"
      ]
    },
    "query_acceleration_max_scale_factor": {
      "type": "integer",
      "description": "Specifies the maximum scale factor for leasing compute resources for query acceleration. The scale factor is used as a multiplier based on warehouse size.",
      "minimum": 0,
      "maximum": 100
    },
    "max_concurrency_level": {
      "type": "integer",
      "description": "Object parameter that specifies the concurrency level for SQL statements executed by a warehouse cluster.",
      "minimum": 1
    },
    "statement_queued_timeout_in_seconds": {
      "type": "integer",
      "description": "Object parameter that specifies the time, in seconds, a SQL statement can be queued on a warehouse before it is canceled by the system.",
      "minimum": 0
    },
    "statement_timeout_in_seconds": {
      "type": "integer",
      "description": "Object parameter that specifies the time, in seconds, after which a running SQL statement is canceled by the system.",
      "minimum": 0
    },
    "warehouse_credit_limit": {
      "type": "integer",
      "description": "Credit limit that can be consumed by the warehouse."
    },
    "target_statement_size": {
      "type": "string",
      "description": "Target statement size for adaptive warehouses.",
      "enum": [
        "X-Small",
        "Small",
        "Medium",
        "Large",
        "X-Large",
        "2X-Large",
        "3X-Large",
        "4X-Large",
        "5X-Large",
        "6X-Large"
      ]
    },
    "state": {
      "type": "string",
      "description": "The current state of the warehouse.",
      "enum": [
        "STARTED",
        "STARTING",
        "DYNAMIC",
        "SUSPENDED",
        "RESIZING",
        "RESUMING",
        "SUSPENDING"
      ],
      "readOnly": true
    },
    "started_clusters": {
      "type": "integer",
      "description": "Number of clusters currently started.",
      "readOnly": true
    },
    "running": {
      "type": "integer",
      "description": "Number of SQL statements that are being executed by the warehouse.",
      "readOnly": true
    },
    "queued": {
      "type": "integer",
      "description": "Number of SQL statements that are queued for the warehouse.",
      "readOnly": true
    },
    "is_default": {
      "type": "boolean",
      "description": "Whether the warehouse is the default for the current user.",
      "readOnly": true
    },
    "is_current": {
      "type": "boolean",
      "description": "Whether the warehouse is in use for the session. Only one warehouse can be in use at a time for a session.",
      "readOnly": true
    },
    "available": {
      "type": "string",
      "description": "Percentage of the warehouse compute resources that are provisioned and available.",
      "readOnly": true
    },
    "provisioning": {
      "type": "string",
      "description": "Percentage of the warehouse compute resources that are in the process of provisioning.",
      "readOnly": true
    },
    "quiescing": {
      "type": "string",
      "description": "Percentage of the warehouse compute resources that are executing SQL statements but will be shut down once the queries complete.",
      "readOnly": true
    },
    "other": {
      "type": "string",
      "description": "Percentage of the warehouse compute resources that are in a state other than available, provisioning, or quiescing.",
      "readOnly": true
    },
    "created_on": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time when the warehouse was created.",
      "readOnly": true
    },
    "resumed_on": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time when the warehouse was last started or restarted.",
      "readOnly": true
    },
    "updated_on": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time when the warehouse was last updated, which includes changing any of the properties of the warehouse or changing the state.",
      "readOnly": true
    },
    "owner": {
      "type": "string",
      "description": "Role that owns the warehouse.",
      "readOnly": true
    },
    "owner_role_type": {
      "type": "string",
      "description": "The type of role that owns the object.",
      "readOnly": true
    },
    "budget": {
      "type": "string",
      "description": "Budget associated with the warehouse.",
      "readOnly": true
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
