{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://gra.dient.art/schemas/v1/project.schema.json",
  "title": "GradientArt project file v1",
  "description": "Editable artwork, not a database backup. Clone graphs, formulas and aggregate limits also require semantic validation.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "format",
    "version",
    "project"
  ],
  "properties": {
    "$schema": {
      "const": "https://gra.dient.art/schemas/gradient-art-v1.schema.json"
    },
    "format": {
      "const": "gradient-art"
    },
    "version": {
      "const": 1
    },
    "project": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "document",
        "backgrounds",
        "variables",
        "cloneSources"
      ],
      "properties": {
        "document": {
          "$ref": "document.schema.json"
        },
        "backgrounds": {
          "type": "array",
          "minItems": 1,
          "maxItems": 60,
          "items": {
            "$ref": "node.schema.json"
          }
        },
        "variables": {
          "$ref": "variables.schema.json"
        },
        "cloneSources": {
          "type": "object",
          "maxProperties": 60,
          "additionalProperties": false,
          "patternProperties": {
            "^[a-zA-Z0-9_-]{1,64}$": {
              "$ref": "source.schema.json"
            }
          }
        }
      }
    }
  }
}
