{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Configuration for the @rushstack/rush-serve-plugin.",
  "description": "For use with the Rush tool, this file provides per-project configuration options. See http://rushjs.io for details.",

  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "Part of the JSON Schema standard, this optional keyword declares the URL of the schema that the file conforms to. Editors may download the schema and use it to perform syntax highlighting.",
      "type": "string"
    },

    "extends": {
      "description": "Optionally specifies another JSON config file that this file extends from. This provides a way for standard settings to be shared across multiple projects. To delete an inherited setting, set it to `null` in this file.",
      "type": "string"
    },

    "routing": {
      "type": "array",
      "description": "Routing rules",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": ["projectRelativeFolder", "servePath"],
            "properties": {
              "projectRelativeFolder": {
                "type": "string",
                "description": "The folder from which to read assets, relative to the root of the current project."
              },

              "servePath": {
                "type": "string",
                "description": "The server path at which to serve the assets in \"projectRelativeFolder\"."
              },

              "immutable": {
                "type": "boolean",
                "description": "Enables or disables the `immutable` directive in the `Cache-Control` resoponse header. See (https://expressjs.com/en/4x/api.html#express.static)."
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": ["projectRelativeFile", "servePath"],
            "properties": {
              "projectRelativeFile": {
                "type": "string",
                "description": "The file to serve, relative to the root of the current project."
              },

              "servePath": {
                "type": "string",
                "description": "The server path at which to serve \"projectRelativeFile\"."
              },

              "immutable": {
                "type": "boolean",
                "description": "Enables or disables the `immutable` directive in the `Cache-Control` resoponse header. See (https://expressjs.com/en/4x/api.html#express.static)."
              }
            }
          }
        ]
      }
    }
  }
}
