{
  "$id": "https://json.schemastore.org/mason-registry.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "definitions": {
    "enums:spdx-license": {
      "$comment": "SPDX license list; releaseDate=2022-12-15; source=https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json",
      "enum": [
        "proprietary",
        "0BSD",
        "AAL",
        "Abstyles",
        "Adobe-2006",
        "Adobe-Glyph",
        "ADSL",
        "AFL-1.1",
        "AFL-1.2",
        "AFL-2.0",
        "AFL-2.1",
        "AFL-3.0",
        "Afmparse",
        "AGPL-1.0",
        "AGPL-1.0-only",
        "AGPL-1.0-or-later",
        "AGPL-3.0",
        "AGPL-3.0-only",
        "AGPL-3.0-or-later",
        "Aladdin",
        "AMDPLPA",
        "AML",
        "AMPAS",
        "ANTLR-PD",
        "ANTLR-PD-fallback",
        "Apache-1.0",
        "Apache-1.1",
        "Apache-2.0",
        "APAFML",
        "APL-1.0",
        "App-s2p",
        "APSL-1.0",
        "APSL-1.1",
        "APSL-1.2",
        "APSL-2.0",
        "Arphic-1999",
        "Artistic-1.0",
        "Artistic-1.0-cl8",
        "Artistic-1.0-Perl",
        "Artistic-2.0",
        "Baekmuk",
        "Bahyph",
        "Barr",
        "Beerware",
        "Bitstream-Vera",
        "BitTorrent-1.0",
        "BitTorrent-1.1",
        "blessing",
        "BlueOak-1.0.0",
        "Borceux",
        "BSD-1-Clause",
        "BSD-2-Clause",
        "BSD-2-Clause-FreeBSD",
        "BSD-2-Clause-NetBSD",
        "BSD-2-Clause-Patent",
        "BSD-2-Clause-Views",
        "BSD-3-Clause",
        "BSD-3-Clause-Attribution",
        "BSD-3-Clause-Clear",
        "BSD-3-Clause-LBNL",
        "BSD-3-Clause-Modification",
        "BSD-3-Clause-No-Military-License",
        "BSD-3-Clause-No-Nuclear-License",
        "BSD-3-Clause-No-Nuclear-License-2014",
        "BSD-3-Clause-No-Nuclear-Warranty",
        "BSD-3-Clause-Open-MPI",
        "BSD-4-Clause",
        "BSD-4-Clause-Shortened",
        "BSD-4-Clause-UC",
        "BSD-Protection",
        "BSD-Source-Code",
        "BSL-1.0",
        "BUSL-1.1",
        "bzip2-1.0.5",
        "bzip2-1.0.6",
        "C-UDA-1.0",
        "CAL-1.0",
        "CAL-1.0-Combined-Work-Exception",
        "Caldera",
        "CATOSL-1.1",
        "CC-BY-1.0",
        "CC-BY-2.0",
        "CC-BY-2.5",
        "CC-BY-2.5-AU",
        "CC-BY-3.0",
        "CC-BY-3.0-AT",
        "CC-BY-3.0-DE",
        "CC-BY-3.0-IGO",
        "CC-BY-3.0-NL",
        "CC-BY-3.0-US",
        "CC-BY-4.0",
        "CC-BY-NC-1.0",
        "CC-BY-NC-2.0",
        "CC-BY-NC-2.5",
        "CC-BY-NC-3.0",
        "CC-BY-NC-3.0-DE",
        "CC-BY-NC-4.0",
        "CC-BY-NC-ND-1.0",
        "CC-BY-NC-ND-2.0",
        "CC-BY-NC-ND-2.5",
        "CC-BY-NC-ND-3.0",
        "CC-BY-NC-ND-3.0-DE",
        "CC-BY-NC-ND-3.0-IGO",
        "CC-BY-NC-ND-4.0",
        "CC-BY-NC-SA-1.0",
        "CC-BY-NC-SA-2.0",
        "CC-BY-NC-SA-2.0-FR",
        "CC-BY-NC-SA-2.0-UK",
        "CC-BY-NC-SA-2.5",
        "CC-BY-NC-SA-3.0",
        "CC-BY-NC-SA-3.0-DE",
        "CC-BY-NC-SA-3.0-IGO",
        "CC-BY-NC-SA-4.0",
        "CC-BY-ND-1.0",
        "CC-BY-ND-2.0",
        "CC-BY-ND-2.5",
        "CC-BY-ND-3.0",
        "CC-BY-ND-3.0-DE",
        "CC-BY-ND-4.0",
        "CC-BY-SA-1.0",
        "CC-BY-SA-2.0",
        "CC-BY-SA-2.0-UK",
        "CC-BY-SA-2.1-JP",
        "CC-BY-SA-2.5",
        "CC-BY-SA-3.0",
        "CC-BY-SA-3.0-AT",
        "CC-BY-SA-3.0-DE",
        "CC-BY-SA-4.0",
        "CC-PDDC",
        "CC0-1.0",
        "CDDL-1.0",
        "CDDL-1.1",
        "CDL-1.0",
        "CDLA-Permissive-1.0",
        "CDLA-Permissive-2.0",
        "CDLA-Sharing-1.0",
        "CECILL-1.0",
        "CECILL-1.1",
        "CECILL-2.0",
        "CECILL-2.1",
        "CECILL-B",
        "CECILL-C",
        "CERN-OHL-1.1",
        "CERN-OHL-1.2",
        "CERN-OHL-P-2.0",
        "CERN-OHL-S-2.0",
        "CERN-OHL-W-2.0",
        "checkmk",
        "ClArtistic",
        "CNRI-Jython",
        "CNRI-Python",
        "CNRI-Python-GPL-Compatible",
        "COIL-1.0",
        "Community-Spec-1.0",
        "Condor-1.1",
        "copyleft-next-0.3.0",
        "copyleft-next-0.3.1",
        "CPAL-1.0",
        "CPL-1.0",
        "CPOL-1.02",
        "Crossword",
        "CrystalStacker",
        "CUA-OPL-1.0",
        "Cube",
        "curl",
        "D-FSL-1.0",
        "diffmark",
        "DL-DE-BY-2.0",
        "DOC",
        "Dotseqn",
        "DRL-1.0",
        "DSDP",
        "dvipdfm",
        "ECL-1.0",
        "ECL-2.0",
        "eCos-2.0",
        "EFL-1.0",
        "EFL-2.0",
        "eGenix",
        "Elastic-2.0",
        "Entessa",
        "EPICS",
        "EPL-1.0",
        "EPL-2.0",
        "ErlPL-1.1",
        "etalab-2.0",
        "EUDatagrid",
        "EUPL-1.0",
        "EUPL-1.1",
        "EUPL-1.2",
        "Eurosym",
        "Fair",
        "FDK-AAC",
        "Frameworx-1.0",
        "FreeBSD-DOC",
        "FreeImage",
        "FSFAP",
        "FSFUL",
        "FSFULLR",
        "FSFULLRWD",
        "FTL",
        "GD",
        "GFDL-1.1",
        "GFDL-1.1-invariants-only",
        "GFDL-1.1-invariants-or-later",
        "GFDL-1.1-no-invariants-only",
        "GFDL-1.1-no-invariants-or-later",
        "GFDL-1.1-only",
        "GFDL-1.1-or-later",
        "GFDL-1.2",
        "GFDL-1.2-invariants-only",
        "GFDL-1.2-invariants-or-later",
        "GFDL-1.2-no-invariants-only",
        "GFDL-1.2-no-invariants-or-later",
        "GFDL-1.2-only",
        "GFDL-1.2-or-later",
        "GFDL-1.3",
        "GFDL-1.3-invariants-only",
        "GFDL-1.3-invariants-or-later",
        "GFDL-1.3-no-invariants-only",
        "GFDL-1.3-no-invariants-or-later",
        "GFDL-1.3-only",
        "GFDL-1.3-or-later",
        "Giftware",
        "GL2PS",
        "Glide",
        "Glulxe",
        "GLWTPL",
        "gnuplot",
        "GPL-1.0",
        "GPL-1.0-only",
        "GPL-1.0-or-later",
        "GPL-1.0+",
        "GPL-2.0",
        "GPL-2.0-only",
        "GPL-2.0-or-later",
        "GPL-2.0-with-autoconf-exception",
        "GPL-2.0-with-bison-exception",
        "GPL-2.0-with-classpath-exception",
        "GPL-2.0-with-font-exception",
        "GPL-2.0-with-GCC-exception",
        "GPL-2.0+",
        "GPL-3.0",
        "GPL-3.0-only",
        "GPL-3.0-or-later",
        "GPL-3.0-with-autoconf-exception",
        "GPL-3.0-with-GCC-exception",
        "GPL-3.0+",
        "gSOAP-1.3b",
        "HaskellReport",
        "Hippocratic-2.1",
        "HPND",
        "HPND-sell-variant",
        "HTMLTIDY",
        "IBM-pibs",
        "ICU",
        "IJG",
        "ImageMagick",
        "iMatix",
        "Imlib2",
        "Info-ZIP",
        "Intel",
        "Intel-ACPI",
        "Interbase-1.0",
        "IPA",
        "IPL-1.0",
        "ISC",
        "Jam",
        "JasPer-2.0",
        "JPNIC",
        "JSON",
        "Knuth-CTAN",
        "LAL-1.2",
        "LAL-1.3",
        "Latex2e",
        "Leptonica",
        "LGPL-2.0",
        "LGPL-2.0-only",
        "LGPL-2.0-or-later",
        "LGPL-2.0+",
        "LGPL-2.1",
        "LGPL-2.1-only",
        "LGPL-2.1-or-later",
        "LGPL-2.1+",
        "LGPL-3.0",
        "LGPL-3.0-only",
        "LGPL-3.0-or-later",
        "LGPL-3.0+",
        "LGPLLR",
        "Libpng",
        "libpng-2.0",
        "libselinux-1.0",
        "libtiff",
        "libutil-David-Nugent",
        "LiLiQ-P-1.1",
        "LiLiQ-R-1.1",
        "LiLiQ-Rplus-1.1",
        "Linux-man-pages-copyleft",
        "Linux-OpenIB",
        "LOOP",
        "LPL-1.0",
        "LPL-1.02",
        "LPPL-1.0",
        "LPPL-1.1",
        "LPPL-1.2",
        "LPPL-1.3a",
        "LPPL-1.3c",
        "LZMA-SDK-9.11-to-9.20",
        "LZMA-SDK-9.22",
        "MakeIndex",
        "Minpack",
        "MirOS",
        "MIT",
        "MIT-0",
        "MIT-advertising",
        "MIT-CMU",
        "MIT-enna",
        "MIT-feh",
        "MIT-Modern-Variant",
        "MIT-open-group",
        "MITNFA",
        "Motosoto",
        "mpi-permissive",
        "mpich2",
        "MPL-1.0",
        "MPL-1.1",
        "MPL-2.0",
        "MPL-2.0-no-copyleft-exception",
        "mplus",
        "MS-LPL",
        "MS-PL",
        "MS-RL",
        "MTLL",
        "MulanPSL-1.0",
        "MulanPSL-2.0",
        "Multics",
        "Mup",
        "NAIST-2003",
        "NASA-1.3",
        "Naumen",
        "NBPL-1.0",
        "NCGL-UK-2.0",
        "NCSA",
        "Net-SNMP",
        "NetCDF",
        "Newsletr",
        "NGPL",
        "NICTA-1.0",
        "NIST-PD",
        "NIST-PD-fallback",
        "NLOD-1.0",
        "NLOD-2.0",
        "NLPL",
        "Nokia",
        "NOSL",
        "Noweb",
        "NPL-1.0",
        "NPL-1.1",
        "NPOSL-3.0",
        "NRL",
        "NTP",
        "NTP-0",
        "Nunit",
        "O-UDA-1.0",
        "OCCT-PL",
        "OCLC-2.0",
        "ODbL-1.0",
        "ODC-By-1.0",
        "OFL-1.0",
        "OFL-1.0-no-RFN",
        "OFL-1.0-RFN",
        "OFL-1.1",
        "OFL-1.1-no-RFN",
        "OFL-1.1-RFN",
        "OGC-1.0",
        "OGDL-Taiwan-1.0",
        "OGL-Canada-2.0",
        "OGL-UK-1.0",
        "OGL-UK-2.0",
        "OGL-UK-3.0",
        "OGTSL",
        "OLDAP-1.1",
        "OLDAP-1.2",
        "OLDAP-1.3",
        "OLDAP-1.4",
        "OLDAP-2.0",
        "OLDAP-2.0.1",
        "OLDAP-2.1",
        "OLDAP-2.2",
        "OLDAP-2.2.1",
        "OLDAP-2.2.2",
        "OLDAP-2.3",
        "OLDAP-2.4",
        "OLDAP-2.5",
        "OLDAP-2.6",
        "OLDAP-2.7",
        "OLDAP-2.8",
        "OML",
        "OpenSSL",
        "OPL-1.0",
        "OPUBL-1.0",
        "OSET-PL-2.1",
        "OSL-1.0",
        "OSL-1.1",
        "OSL-2.0",
        "OSL-2.1",
        "OSL-3.0",
        "Parity-6.0.0",
        "Parity-7.0.0",
        "PDDL-1.0",
        "PHP-3.0",
        "PHP-3.01",
        "Plexus",
        "PolyForm-Noncommercial-1.0.0",
        "PolyForm-Small-Business-1.0.0",
        "PostgreSQL",
        "PSF-2.0",
        "psfrag",
        "psutils",
        "Python-2.0",
        "Python-2.0.1",
        "Qhull",
        "QPL-1.0",
        "Rdisc",
        "RHeCos-1.1",
        "RPL-1.1",
        "RPL-1.5",
        "RPSL-1.0",
        "RSA-MD",
        "RSCPL",
        "Ruby",
        "SAX-PD",
        "Saxpath",
        "SCEA",
        "SchemeReport",
        "Sendmail",
        "Sendmail-8.23",
        "SGI-B-1.0",
        "SGI-B-1.1",
        "SGI-B-2.0",
        "SHL-0.5",
        "SHL-0.51",
        "SimPL-2.0",
        "SISSL",
        "SISSL-1.2",
        "Sleepycat",
        "SMLNJ",
        "SMPPL",
        "SNIA",
        "Spencer-86",
        "Spencer-94",
        "Spencer-99",
        "SPL-1.0",
        "SSH-OpenSSH",
        "SSH-short",
        "SSPL-1.0",
        "StandardML-NJ",
        "SugarCRM-1.1.3",
        "SWL",
        "Symlinks",
        "TAPR-OHL-1.0",
        "TCL",
        "TCP-wrappers",
        "TMate",
        "TORQUE-1.1",
        "TOSL",
        "TU-Berlin-1.0",
        "TU-Berlin-2.0",
        "UCL-1.0",
        "Unicode-DFS-2015",
        "Unicode-DFS-2016",
        "Unicode-TOU",
        "Unlicense",
        "UPL-1.0",
        "Vim",
        "VOSTROM",
        "VSL-1.0",
        "W3C",
        "W3C-19980720",
        "W3C-20150513",
        "Watcom-1.0",
        "Wsuipa",
        "WTFPL",
        "wxWindows",
        "X11",
        "X11-distribute-modifications-variant",
        "Xerox",
        "XFree86-1.1",
        "xinetd",
        "Xnet",
        "xpp",
        "XSkat",
        "YPL-1.0",
        "YPL-1.1",
        "Zed",
        "Zend-2.0",
        "Zimbra-1.3",
        "Zimbra-1.4",
        "Zlib",
        "zlib-acknowledgement",
        "ZPL-1.1",
        "ZPL-2.0",
        "ZPL-2.1"
      ],
      "type": "string"
    },
    "enums:language": {
      "type": "string",
      "enum": [
        ".NET",
        "1С:Enterprise",
        "AWK",
        "Ada",
        "Angular",
        "Ansible",
        "Antlers",
        "Apex",
        "Arduino",
        "Assembly",
        "Astro",
        "Azure Pipelines",
        "Bash",
        "Bazel",
        "Beancount",
        "Bicep",
        "Blade",
        "BrighterScript",
        "C",
        "C#",
        "C++",
        "CMake",
        "CQL",
        "CSS",
        "Clarity",
        "Clojure",
        "ClojureScript",
        "CodeQL",
        "Crystal",
        "Csh",
        "Cucumber",
        "Cue",
        "D",
        "DOT",
        "Dart",
        "Dhall",
        "Django",
        "Docker",
        "Drools",
        "Elixir",
        "Elm",
        "Ember",
        "Emmet",
        "Erg",
        "Erlang",
        "F#",
        "Fennel",
        "Flow",
        "Flux",
        "Fortran",
        "Gleam",
        "Glimmer",
        "Go",
        "Gradle",
        "GraphQL",
        "Groovy",
        "HAML",
        "HTML",
        "Handlebargs",
        "Handlebars",
        "Haskell",
        "Haxe",
        "Helm",
        "Hoon",
        "JSON",
        "JSX",
        "Java",
        "JavaScript",
        "Jinja",
        "Jq",
        "Jsonnet",
        "Julia",
        "Kotlin",
        "Ksh",
        "LESS",
        "LaTeX",
        "Lelwel",
        "Liquid",
        "Lua",
        "Luau",
        "Markdown",
        "Metamath Zero",
        "Mksh",
        "Move",
        "Mustache",
        "Nginx",
        "Nickel",
        "Nim",
        "Nix",
        "Nunjucks",
        "OCaml",
        "Odin",
        "OneScript",
        "OpenAPI",
        "OpenCL",
        "OpenEdge",
        "OpenFOAM",
        "OpenSCAD",
        "PHP",
        "Perl",
        "PowerShell",
        "Prisma",
        "Progress",
        "Protobuf",
        "Puppet",
        "PureScript",
        "Python",
        "R",
        "Raku",
        "ReScript",
        "Reason",
        "Robot Framework",
        "Ruby",
        "Rust",
        "SCSS",
        "SQL",
        "Salt",
        "Sass",
        "Scala",
        "Sh",
        "Shell",
        "Slint",
        "Smithy",
        "Standard ML",
        "Snakemake",
        "Solidity",
        "Sphinx",
        "Starlark",
        "Stylelint",
        "Svelte",
        "SystemVerilog",
        "TOML",
        "Teal",
        "Terraform",
        "Text",
        "Twig",
        "TypeScript",
        "Typst",
        "V",
        "Vala",
        "Veryl",
        "VimScript",
        "Visualforce",
        "Vue",
        "WGSL",
        "XML",
        "YAML",
        "YARA",
        "Zig",
        "Zsh"
      ]
    },
    "enums:category": {
      "type": "string",
      "enum": ["Compiler", "DAP", "Formatter", "LSP", "Linter", "Runtime"]
    },
    "components:source": {
      "oneOf": [
        {
          "$ref": "#/definitions/components:sources:cargo"
        },
        {
          "$ref": "#/definitions/components:sources:composer"
        },
        {
          "$ref": "#/definitions/components:sources:gem"
        },
        {
          "$ref": "#/definitions/components:sources:generic"
        },
        {
          "$ref": "#/definitions/components:sources:github"
        },
        {
          "$ref": "#/definitions/components:sources:golang"
        },
        {
          "$ref": "#/definitions/components:sources:luarocks"
        },
        {
          "$ref": "#/definitions/components:sources:npm"
        },
        {
          "$ref": "#/definitions/components:sources:nuget"
        },
        {
          "$ref": "#/definitions/components:sources:opam"
        },
        {
          "$ref": "#/definitions/components:sources:pypi"
        }
      ]
    },
    "components:sources:cargo": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:cargo/.+@.+"
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the cargo package.",
          "items": {
            "$ref": "#/definitions/enums:platform"
          }
        }
      }
    },
    "enums:platform": {
      "type": "string",
      "enum": [
        "unix",
        "darwin",
        "darwin_arm64",
        "darwin_x64",
        "linux",
        "linux_arm",
        "linux_arm64",
        "linux_arm64_gnu",
        "linux_arm64_musl",
        "linux_arm64_openbsd",
        "linux_arm_gnu",
        "linux_armv6_gnu",
        "linux_armv6l",
        "linux_armv7_gnu",
        "linux_armv7l",
        "linux_x64",
        "linux_x64_gnu",
        "linux_x64_musl",
        "linux_x64_openbsd",
        "linux_x86",
        "linux_x86_gnu",
        "linux_x86_musl",
        "linux_x86_openbsd",
        "win",
        "win_arm",
        "win_arm64",
        "win_armv6l",
        "win_armv7l",
        "win_x64",
        "win_x86"
      ]
    },
    "components:sources:composer": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:composer/.+/.+@.+"
        }
      }
    },
    "components:sources:gem": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:gem/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra gem packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the gem package.",
          "items": {
            "$ref": "#/definitions/enums:platform"
          }
        }
      }
    },
    "components:sources:generic": {
      "oneOf": [
        {
          "$ref": "#/definitions/components:sources:generic:download"
        },
        {
          "$ref": "#/definitions/components:sources:generic:build"
        }
      ]
    },
    "components:sources:generic:download": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "download"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:generic/.+@.+"
        },
        "download": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/components:sources:generic:download/definitions/Download"
              }
            },
            {
              "$ref": "#/definitions/components:sources:generic:download/definitions/Download"
            }
          ]
        }
      },
      "definitions": {
        "Download": {
          "type": "object",
          "required": ["files"],
          "additionalProperties": true,
          "properties": {
            "target": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/enums:platform"
                  }
                },
                {
                  "$ref": "#/definitions/enums:platform"
                }
              ]
            },
            "files": {
              "type": "object",
              "patternProperties": {
                "^[a-zA-Z0-9_\\-\\.]+$": {
                  "type": "string",
                  "pattern": "^https?://"
                }
              },
              "additionalProperties": false
            }
          }
        }
      }
    },
    "components:sources:generic:build": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "build"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:generic/.+@.+"
        },
        "build": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/components:sources:build"
              }
            },
            {
              "$ref": "#/definitions/components:sources:build"
            }
          ]
        }
      }
    },
    "components:sources:build": {
      "type": "object",
      "required": ["run"],
      "additionalProperties": true,
      "properties": {
        "target": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/enums:platform"
              }
            },
            {
              "$ref": "#/definitions/enums:platform"
            }
          ]
        },
        "run": {
          "type": "string",
          "description": "The shell script to run. Platform sensitive (bash on Unix, powershell on Windows)."
        },
        "env": {
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^[A-Z0-9_]+$": {
              "type": "string"
            }
          }
        },
        "staged": {
          "type": "boolean",
          "description": "Whether to run the build script in a staging location (defaults to true)."
        }
      }
    },
    "components:sources:github": {
      "oneOf": [
        {
          "$ref": "#/definitions/components:sources:github:release"
        },
        {
          "$ref": "#/definitions/components:sources:github:build"
        }
      ]
    },
    "components:sources:github:release": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "asset"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:github/.+/.+@.+"
        },
        "asset": {
          "$ref": "#/definitions/components:sources:github:release/definitions/Asset"
        },
        "version_overrides": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["constraint", "asset"],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^pkg:github/.+/[^@]+$"
              },
              "constraint": {
                "type": "string",
                "pattern": "^semver:(<=)?v?\\d+\\.\\d+\\.\\d+"
              },
              "asset": {
                "$ref": "#/definitions/components:sources:github:release/definitions/Asset"
              }
            }
          }
        }
      },
      "definitions": {
        "Asset": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "required": ["target", "file"],
                "additionalProperties": true,
                "properties": {
                  "target": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/enums:platform"
                        }
                      },
                      {
                        "$ref": "#/definitions/enums:platform"
                      }
                    ]
                  },
                  "file": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              }
            },
            {
              "type": "object",
              "properties": {
                "file": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              }
            }
          ]
        }
      }
    },
    "components:sources:github:build": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "build"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:github/.+/.+@.+"
        },
        "build": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/components:sources:build"
              }
            },
            {
              "$ref": "#/definitions/components:sources:build"
            }
          ]
        }
      }
    },
    "components:sources:golang": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:golang/.+/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra golang packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "components:sources:luarocks": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:luarocks/.+@.+"
        }
      }
    },
    "components:sources:npm": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:npm/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra npm packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "components:sources:nuget": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:nuget/.+@.+"
        }
      }
    },
    "components:sources:opam": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:opam/.+@.+"
        }
      }
    },
    "components:sources:pypi": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id"],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:pypi/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra pypi packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the pypi package.",
          "items": {
            "$ref": "#/definitions/enums:platform"
          }
        }
      }
    },
    "components:schemas": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "lsp": {
          "type": "string",
          "description": "A URL to where the LSP JSON schema can be downloaded from. If the provided URL is a VSCode package.json you MUST prefix the url with vscode:",
          "pattern": "^(vscode:)?https://"
        }
      }
    },
    "components:bin": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\.]+$": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "components:share": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\./]+$": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "components:opt": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\./]+$": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "description": "Schema for package definitions.",
  "properties": {
    "name": {
      "type": "string",
      "description": "The package name. MUST be unique within the registry it belongs to."
    },
    "description": {
      "type": "string",
      "description": "The description of the package. Usually sourced upstream."
    },
    "homepage": {
      "type": "string",
      "format": "uri",
      "pattern": "^https?://",
      "description": "A URL to the package's homepage."
    },
    "licenses": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/definitions/enums:spdx-license"
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/enums:language"
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/enums:category"
      }
    },
    "source": {
      "$ref": "#/definitions/components:source"
    },
    "schemas": {
      "$ref": "#/definitions/components:schemas"
    },
    "bin": {
      "$ref": "#/definitions/components:bin"
    },
    "share": {
      "$ref": "#/definitions/components:share"
    },
    "opt": {
      "$ref": "#/definitions/components:opt"
    },
    "ci_skip": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/enums:platform"
          }
        }
      ]
    }
  },
  "required": [
    "name",
    "description",
    "homepage",
    "licenses",
    "languages",
    "categories",
    "source"
  ],
  "title": "Mason Registry package schema",
  "type": "object"
}
