{
  "$id": "https://aka.ms/winget-manifest.locale.1.0.0.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "Url": {
      "type": ["string", "null"],
      "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$",
      "maxLength": 2000,
      "description": "Optional Url type"
    },
    "Tag": {
      "type": ["string", "null"],
      "minLength": 1,
      "maxLength": 40,
      "description": "Package moniker or tag"
    }
  },
  "description": "A representation of a multiple-file manifest representing app metadata in other locale in the OWC. v1.0.0",
  "properties": {
    "PackageIdentifier": {
      "type": "string",
      "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$",
      "maxLength": 128,
      "description": "The package unique identifier"
    },
    "PackageVersion": {
      "type": "string",
      "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$",
      "maxLength": 128,
      "description": "The package version"
    },
    "PackageLocale": {
      "type": "string",
      "pattern": "^([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$",
      "maxLength": 20,
      "description": "The package meta-data locale"
    },
    "Publisher": {
      "type": ["string", "null"],
      "minLength": 2,
      "maxLength": 256,
      "description": "The publisher name"
    },
    "PublisherUrl": {
      "$ref": "#/definitions/Url",
      "description": "The publisher home page"
    },
    "PublisherSupportUrl": {
      "$ref": "#/definitions/Url",
      "description": "The publisher support page"
    },
    "PrivacyUrl": {
      "$ref": "#/definitions/Url",
      "description": "The publisher privacy page or the package privacy page"
    },
    "Author": {
      "type": ["string", "null"],
      "minLength": 2,
      "maxLength": 256,
      "description": "The package author"
    },
    "PackageName": {
      "type": ["string", "null"],
      "minLength": 2,
      "maxLength": 256,
      "description": "The package name"
    },
    "PackageUrl": {
      "$ref": "#/definitions/Url",
      "description": "The package home page"
    },
    "License": {
      "type": ["string", "null"],
      "minLength": 3,
      "maxLength": 512,
      "description": "The package license"
    },
    "LicenseUrl": {
      "$ref": "#/definitions/Url",
      "description": "The license page"
    },
    "Copyright": {
      "type": ["string", "null"],
      "minLength": 3,
      "maxLength": 512,
      "description": "The package copyright"
    },
    "CopyrightUrl": {
      "$ref": "#/definitions/Url",
      "description": "The package copyright page"
    },
    "ShortDescription": {
      "type": ["string", "null"],
      "minLength": 3,
      "maxLength": 256,
      "description": "The short package description"
    },
    "Description": {
      "type": ["string", "null"],
      "minLength": 3,
      "maxLength": 10000,
      "description": "The full package description"
    },
    "Moniker": {
      "$ref": "#/definitions/Tag",
      "description": "The most common package term"
    },
    "Tags": {
      "type": ["array", "null"],
      "items": {
        "$ref": "#/definitions/Tag"
      },
      "maxItems": 16,
      "uniqueItems": true,
      "description": "List of additional package search terms"
    },
    "ManifestType": {
      "type": "string",
      "default": "locale",
      "const": "locale",
      "description": "The manifest type"
    },
    "ManifestVersion": {
      "type": "string",
      "default": "1.0.0",
      "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$",
      "description": "The manifest syntax version"
    }
  },
  "required": [
    "PackageIdentifier",
    "PackageVersion",
    "PackageLocale",
    "ManifestType",
    "ManifestVersion"
  ],
  "type": "object"
}
