{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "anyOf": [
    {
      "$ref": "#/definitions/IGraphQLProjects"
    },
    {
      "$ref": "#/definitions/IGraphQLProject"
    },
    {
      "$ref": "#/definitions/IGraphQLProjectLegacy"
    }
  ],
  "definitions": {
    "DocumentPointer": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "string"
        }
      ],
      "title": "DocumentPointer"
    },
    "IExtensions": {
      "additionalProperties": {},
      "description": "Configuration of each used extension",
      "title": "IExtensions",
      "type": "object"
    },
    "IGraphQLProject": {
      "description": "GraphQL Project",
      "properties": {
        "documents": {
          "$ref": "#/definitions/DocumentPointer",
          "title": "documents"
        },
        "exclude": {
          "$ref": "#/definitions/WithList<string>",
          "title": "exclude"
        },
        "extensions": {
          "$ref": "#/definitions/IExtensions",
          "title": "extensions"
        },
        "include": {
          "$ref": "#/definitions/WithList<string>",
          "title": "include"
        },
        "schema": {
          "$ref": "#/definitions/SchemaPointer",
          "title": "schema"
        }
      },
      "required": ["schema"],
      "title": "IGraphQLProject",
      "type": "object"
    },
    "IGraphQLProjectLegacy": {
      "description": "Legacy structure of GraphQL Config v2",
      "properties": {
        "excludes": {
          "items": {
            "type": "string"
          },
          "title": "excludes",
          "type": "array"
        },
        "extensions": {
          "$ref": "#/definitions/IExtensions",
          "title": "extensions"
        },
        "includes": {
          "items": {
            "type": "string"
          },
          "title": "includes",
          "type": "array"
        },
        "schemaPath": {
          "title": "schemaPath",
          "type": "string"
        }
      },
      "required": ["schemaPath"],
      "title": "IGraphQLProjectLegacy",
      "type": "object"
    },
    "IGraphQLProjects": {
      "description": "Multiple named projects",
      "properties": {
        "projects": {
          "additionalProperties": {
            "anyOf": [
              {
                "$ref": "#/definitions/IGraphQLProject"
              },
              {
                "$ref": "#/definitions/IGraphQLProjectLegacy"
              }
            ]
          },
          "title": "projects",
          "type": "object"
        }
      },
      "required": ["projects"],
      "title": "IGraphQLProjects",
      "type": "object"
    },
    "SchemaPointer": {
      "anyOf": [
        {
          "additionalProperties": {
            "properties": {
              "headers": {
                "additionalProperties": {
                  "type": "string"
                },
                "title": "headers",
                "type": "object"
              }
            },
            "required": ["headers"],
            "type": "object"
          },
          "type": "object"
        },
        {
          "items": {
            "anyOf": [
              {
                "additionalProperties": {
                  "properties": {
                    "headers": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "title": "headers",
                      "type": "object"
                    }
                  },
                  "required": ["headers"],
                  "type": "object"
                },
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "string"
        }
      ],
      "title": "SchemaPointer"
    },
    "WithList<string>": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "string"
        }
      ],
      "title": "WithList<string>"
    }
  },
  "description": "Structure of GraphQL Config"
}
