{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://jsonschema.ntnyq.com/sitemap.schema.json",
  "title": "JSON schema for weapp sitemap config",
  "description": "Configuration Schema for weapp sitemap config",
  "type": "object",
  "properties": {
    "rules": {
      "type": "array",
      "description": "sitemap 索引规则列表",
      "markdownDescription": "sitemap 索引规则列表",
      "items": {
        "type": "object",
        "description": "sitemap 索引规则",
        "markdownDescription": "sitemap 索引规则列表",
        "properties": {
          "action": {
            "type": "string",
            "description": "命中该规则的页面是否能被索引",
            "markdownDescription": "命中该规则的页面是否能被索引",
            "default": "allow",
            "oneOf": [
              {
                "const": "allow",
                "description": "命中该规则的页面允许被索引",
                "markdownDescription": "命中该规则的页面允许被索引"
              },
              {
                "const": "disallow",
                "description": "命中该规则的页面禁止被索引",
                "markdownDescription": "命中该规则的页面禁止被索引"
              }
            ]
          },
          "page": {
            "type": "string",
            "description": "* 或页面的路径，* 表示所有页面，不能作为通配符使用",
            "markdownDescription": "`*` 或页面的路径，`*` 表示所有页面，不能作为通配符使用",
            "oneOf": [
              {
                "type": "string",
                "description": "所有页面",
                "const": "*"
              },
              {
                "type": "string",
                "description": "页面路径",
                "pattern": "^pages/[a-zA-Z0-9-_/]+$"
              }
            ]
          },
          "params": {
            "type": "array",
            "description": "当 page 字段指定的页面在被本规则匹配时可能使用的页面参数名称的列表（不含参数值）",
            "markdownDescription": "当 `page` 字段指定的页面在被本规则匹配时可能使用的页面参数名称的列表（不含参数值）",
            "items": {
              "type": "string"
            }
          },
          "matching": {
            "type": "string",
            "description": "当 page 字段指定的页面在被本规则匹配时，此参数说明 params 匹配方式",
            "markdownDescription": "当 `page` 字段指定的页面在被本规则匹配时，此参数说明 `params` 匹配方式",
            "default": "inclusive",
            "oneOf": [
              {
                "const": "inclusive",
                "description": "当小程序页面的参数列表包含 params 时，规则命中",
                "markdownDescription": "当小程序页面的参数列表包含 `params` 时，规则命中"
              },
              {
                "const": "exclusive",
                "description": "当小程序页面的参数列表与 params 交集为空时，规则命中",
                "markdownDescription": "当小程序页面的参数列表与 `params` 交集为空时，规则命中"
              },
              {
                "const": "exact",
                "description": "当小程序页面的参数列表等于 params 时，规则命中",
                "markdownDescription": "当小程序页面的参数列表等于 `params` 时，规则命中"
              },
              {
                "const": "partial",
                "description": "当小程序页面的参数列表与 params 交集不为空时，规则命中",
                "markdownDescription": "当小程序页面的参数列表与 `params` 交集不为空时，规则命中"
              }
            ]
          },
          "priority": {
            "type": "number",
            "description": "优先级，值越大则规则越早被匹配，否则默认从上到下匹配",
            "markdownDescription": "优先级，值越大则规则越早被匹配，否则默认从上到下匹配"
          }
        },
        "required": ["page"]
      }
    }
  },
  "required": ["rules"]
}
