{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://reqview.com/schemas/2.22/project.json",
  "title": "ReqView Project File",

  "type": "object",
  "properties": {
    "id": {
      "description": "A unique identifier of the project",
      "$ref": "common.json#/definitions/fileName"
    },
    "description": {
      "description": "Project description; simple, multiline string",
      "$ref": "common.json#/definitions/nonEmptyString"
    },
    "group": { "$ref": "config.json#/definitions/group" },
    "documents": {
      "description": "Array of project documents",
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": { "$ref": "document.json" }
    },
    "hierarchy": { "$ref": "config.json#/definitions/hierarchy" },
    "attachments": {
      "description": "Project attachments (images, documents etc.) referenced from document objects",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Attachment data URL encoded as a Base64 string",
            "$ref": "common.json#/definitions/nonEmptyString"
          }
        }
      },
      "examples": [
        {
          "DOC-3_1_diagram.gif": {
            "data": "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
          }
        }
      ]
    },
    "traceability": { "$ref": "config.json#/definitions/traceability" },
    "linkedProjects": { "$ref": "config.json#/definitions/linkedProjects" },
    "exports": { "$ref": "config.json#/definitions/exports" },
    "dashboard": { "$ref": "config.json#/definitions/dashboard" },
    "integrations": { "$ref": "config.json#/definitions/integrations" },
    "metadata": { "$ref": "config.json#/definitions/metadata" }
  },

  "required": ["documents", "metadata"]
}
