{
  "title": "Q# project manifest",
  "type": "object",
  "properties": {
    "author": {
      "title": "Author",
      "type": "string"
    },
    "license": {
      "title": "License",
      "type": "string"
    },
    "languageFeatures": {
      "title": "Language features",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "packageType": {
      "title": "Package type",
      "type": "string",
      "enum": ["exe", "lib"]
    },
    "targetProfile": {
      "title": "Target QIR Profile",
      "type": "string",
      "enum": ["unrestricted", "adaptive_ri", "adaptive_rif", "base"]
    },
    "lints": {
      "title": "Lints",
      "type": "array",
      "items": {
        "title": "lint",
        "type": "object",
        "oneOf": [
          {
            "properties": {
              "group": {
                "type": "string",
                "enum": ["deprecations"]
              },
              "level": {
                "type": "string",
                "enum": ["allow", "warn", "error"]
              }
            },
            "required": ["group", "level"],
            "additionalProperties": false
          },
          {
            "properties": {
              "lint": {
                "type": "string",
                "enum": [
                  "divisionByZero",
                  "needlessParens",
                  "redundantSemicolons",
                  "deprecatedNewtype",
                  "deprecatedSet",
                  "discourageChainAssignment",
                  "deprecatedAssignUpdateExpr",
                  "deprecatedUpdateExpr",
                  "doubleEquality",
                  "needlessOperation",
                  "deprecatedFunctionConstructor",
                  "deprecatedWithOperator",
                  "deprecatedDoubleColonOperator"
                ]
              },
              "level": {
                "type": "string",
                "enum": ["allow", "warn", "error"]
              }
            },
            "required": ["lint", "level"],
            "additionalProperties": false
          }
        ]
      }
    },
    "dependencies": {
      "title": "Dependencies",
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              }
            },
            "required": ["path"],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "github": {
                "type": "object",
                "properties": {
                  "owner": {
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "ref": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string"
                  }
                },
                "required": ["owner", "repo", "ref"],
                "additionalProperties": false
              }
            },
            "required": ["github"],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "files": {
    "type": "array",
    "items": {
      "type": "string"
    }
  }
}
