{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/latest.json",
  "title": "OWASP Project",
  "description": "OWASP project schema",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/OWASP/nest-schema/main/project.json",
    "sourceSha256": "7e1d23eafe0a4e3ba269d7cda13e2a9a2fc05516a685fee837292d0934f85308",
    "fileMatch": [
      "project.owasp.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "audience": {
      "description": "The intended audience for the project.",
      "items": {
        "enum": [
          "breaker",
          "builder",
          "defender"
        ],
        "enumDescriptions": [
          "Security testers and ethical hackers.",
          "Developers and engineers.",
          "Security professionals and defenders."
        ],
        "type": "string"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "blog": {
      "description": "Project's blog.",
      "format": "uri",
      "type": "string"
    },
    "community": {
      "description": "A list of community platforms associated with the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/community"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "demo": {
      "description": "Optional URLs to the project demo.",
      "items": {
        "format": "uri",
        "type": "string"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "documentation": {
      "description": "Optional URLs to project documentation.",
      "items": {
        "format": "uri",
        "type": "string"
      },
      "minItems": 1,
      "optional": true,
      "type": "array",
      "uniqueItems": true
    },
    "downloads": {
      "description": "Optional list of download URLs.",
      "items": {
        "format": "uri",
        "type": "string"
      },
      "minItems": 1,
      "optional": true,
      "type": "array",
      "uniqueItems": true
    },
    "events": {
      "description": "Events related to the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/event"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "leaders": {
      "description": "Leaders of the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/person"
      },
      "maxItems": 5,
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "level": {
      "default": 2,
      "description": "The numeric level of the project.",
      "enum": [
        2,
        3,
        3.5,
        4
      ],
      "enumDescriptions": [
        "Incubator",
        "Lab",
        "Production",
        "Flagship"
      ],
      "title": "Project level.",
      "type": "number"
    },
    "license": {
      "description": "The licenses of the project.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AGPL-3.0",
          "Apache License 2.0",
          "Apache-2.0",
          "BSD-2-Clause",
          "BSD-3-Clause",
          "CC-BY-4.0",
          "CC-BY-NC-ND-4.0",
          "CC-BY-SA-4.0",
          "CC0-1.0",
          "EUPL-1.2",
          "GPL-2.0",
          "GPL-3.0",
          "LGPL-2.1",
          "LGPL-3.0",
          "MIT",
          "MPL-2.0",
          "OTHER"
        ]
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "logo": {
      "description": "Logo information for the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/logo"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "mailing_list": {
      "description": "The optional mailing list associated with the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/mailing_list"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "name": {
      "description": "The unique name of the project.",
      "minLength": 8,
      "type": "string"
    },
    "pitch": {
      "description": "The project pitch.",
      "minLength": 10,
      "type": "string"
    },
    "repositories": {
      "description": "Repositories associated with the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/repository"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "social_media": {
      "description": "Social media information for the project",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/social_media"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "sponsors": {
      "description": "Sponsors of the project.",
      "items": {
        "$ref": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json#/$defs/sponsor"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "tags": {
      "description": "Tags for the project",
      "items": {
        "type": "string"
      },
      "minItems": 3,
      "type": "array",
      "uniqueItems": true
    },
    "type": {
      "description": "The type of the project: code, documentation or tool.",
      "enum": [
        "code",
        "documentation",
        "tool"
      ],
      "enumDescriptions": [
        "Code projects",
        "Documentation, standards, etc.",
        "Tools"
      ],
      "type": "string"
    },
    "website": {
      "description": "The official website of the project.",
      "format": "uri",
      "minLength": 4,
      "type": "string"
    }
  },
  "required": [
    "audience",
    "leaders",
    "level",
    "name",
    "pitch",
    "type"
  ],
  "additionalProperties": false
}
