{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/project-owasp-yaml/_shared/latest--common.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/OWASP/nest-schema/main/common.json",
    "sourceSha256": "228bbd411603d332f35322757e07565c01972fb10a6b763723dc0fc82418df66"
  },
  "$defs": {
    "community": {
      "type": "object",
      "description": "Community",
      "properties": {
        "description": {
          "description": "A brief description of the community.",
          "minLength": 10,
          "type": "string"
        },
        "name": {
          "description": "The name of the community.",
          "minLength": 3,
          "type": "string"
        },
        "platform": {
          "description": "The platform used by the community",
          "enum": [
            "discord",
            "github-discussions",
            "matrix",
            "reddit",
            "slack"
          ],
          "type": "string"
        },
        "url": {
          "description": "The URL of the community.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "name",
        "platform",
        "url"
      ],
      "title": "Community",
      "additionalProperties": false
    },
    "event": {
      "type": "object",
      "description": "Event",
      "properties": {
        "description": {
          "description": "A brief description of event",
          "minLength": 10,
          "type": "string"
        },
        "title": {
          "description": "Title of the event",
          "minLength": 10,
          "type": "string"
        },
        "url": {
          "description": "URL of the event",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "title": "Event",
      "additionalProperties": false
    },
    "location": {
      "type": "object",
      "description": "A geographic location",
      "properties": {
        "address": {
          "description": "Street address",
          "minLength": 5,
          "type": "string"
        },
        "city": {
          "description": "City name",
          "minLength": 2,
          "type": "string"
        },
        "country": {
          "description": "Country name",
          "minLength": 2,
          "type": "string"
        },
        "country_code": {
          "description": "ISO 3166-1 alpha-2 country code",
          "pattern": "^[A-Z]{2}$",
          "type": "string"
        },
        "latitude": {
          "description": "Latitude coordinate",
          "maximum": 90,
          "minimum": -90,
          "type": "number"
        },
        "longitude": {
          "description": "Longitude coordinate",
          "maximum": 180,
          "minimum": -180,
          "type": "number"
        },
        "postal_code": {
          "description": "Postal or ZIP code",
          "minLength": 2,
          "type": "string"
        },
        "region": {
          "description": "Region, state, or province",
          "minLength": 2,
          "type": "string"
        },
        "timezone": {
          "description": "IANA timezone identifier",
          "minLength": 3,
          "type": "string"
        }
      },
      "required": [
        "country",
        "country_code"
      ],
      "title": "Location",
      "additionalProperties": false
    },
    "logo": {
      "type": "object",
      "description": "A logo",
      "properties": {
        "small": {
          "description": "Logo size should be 192x192 pixels.",
          "type": "string",
          "format": "uri"
        },
        "medium": {
          "description": "Logo size should be 256x256 pixels.",
          "type": "string",
          "format": "uri"
        },
        "large": {
          "description": "Logo size should be 512x512 pixels.",
          "type": "string",
          "format": "uri"
        }
      },
      "anyOf": [
        {
          "required": [
            "small"
          ]
        },
        {
          "required": [
            "medium"
          ]
        },
        {
          "required": [
            "large"
          ]
        }
      ],
      "title": "Logo",
      "additionalProperties": false
    },
    "mailing_list": {
      "type": "object",
      "description": "Mail List",
      "properties": {
        "description": {
          "description": "Description of mailing list",
          "type": "string",
          "minLength": 10
        },
        "email": {
          "description": "E-mail address",
          "format": "email",
          "minLength": 5,
          "type": "string"
        },
        "title": {
          "description": "Title of mailing list",
          "minLength": 10,
          "type": "string"
        },
        "url": {
          "description": "URL to mailing list",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "title": "Mailing List",
      "additionalProperties": false
    },
    "person": {
      "type": "object",
      "description": "Person",
      "properties": {
        "email": {
          "description": "E-mail address",
          "format": "email",
          "minLength": 5,
          "type": "string"
        },
        "github": {
          "description": "GitHub username",
          "pattern": "^[a-zA-Z0-9-]{1,39}$",
          "type": "string"
        },
        "name": {
          "description": "Full name",
          "minLength": 2,
          "type": "string"
        },
        "slack": {
          "description": "Slack username",
          "pattern": "^[a-zA-Z0-9._-]{1,21}$",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "Person",
      "additionalProperties": false
    },
    "repository": {
      "type": "object",
      "description": "A repository",
      "properties": {
        "changelog": {
          "description": "Link to the changelog",
          "format": "uri",
          "minLength": 5,
          "type": "string"
        },
        "code_of_conduct": {
          "description": "Link to the code of conduct",
          "format": "uri",
          "minLength": 5,
          "type": "string"
        },
        "contribution_guide": {
          "description": "Link to the contribution guide",
          "format": "uri",
          "minLength": 5,
          "type": "string"
        },
        "description": {
          "description": "Repository description",
          "minLength": 5,
          "type": "string"
        },
        "name": {
          "description": "Repository name",
          "minLength": 3,
          "type": "string"
        },
        "url": {
          "description": "The repository URL.",
          "format": "uri",
          "minLength": 5,
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "title": "Repository",
      "additionalProperties": false
    },
    "social_media": {
      "type": "object",
      "description": "A social media platform for the project",
      "properties": {
        "description": {
          "description": "Description of the social media platform",
          "minLength": 5,
          "type": "string"
        },
        "platform": {
          "description": "The type of social media platform.",
          "enum": [
            "bluesky",
            "facebook",
            "linkedin",
            "mastodon",
            "x",
            "youtube"
          ],
          "type": "string"
        },
        "url": {
          "description": "The URL of the social media profile.",
          "type": "string",
          "format": "uri"
        }
      },
      "required": [
        "platform",
        "url"
      ],
      "title": "Social media",
      "additionalProperties": false
    },
    "sponsor": {
      "type": "object",
      "description": "A sponsor entity",
      "properties": {
        "description": {
          "description": "A brief description of the sponsor",
          "minLength": 5,
          "type": "string"
        },
        "logo": {
          "description": "The URL of the sponsor's logo",
          "format": "uri",
          "type": "string"
        },
        "name": {
          "description": "The name of the sponsor or organization",
          "minLength": 5,
          "type": "string"
        },
        "url": {
          "description": "The URL of the sponsor.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "name",
        "url"
      ],
      "title": "Sponsor",
      "additionalProperties": false
    }
  }
}
