{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/YaoHttp.HttpDSL",
  "definitions": {
    "YaoHttp.HttpDSL": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "版本【管理字段】"
        },
        "decription": {
          "type": "string",
          "description": "描述【管理字段】"
        },
        "comment": {
          "type": "string",
          "description": "备注【管理字段】"
        },
        "name": {
          "type": "string",
          "description": "API 呈现名称"
        },
        "description": {
          "type": "string",
          "description": "描述"
        },
        "group": {
          "type": "string",
          "description": "API 分组名称，访问时作为 API 路由前缀目录。 `/api/<group>/<path>`"
        },
        "guard": {
          "type": "string",
          "description": "API 全局中间件，多个用 \",\" 分割。除特别声明，组内所有 API 都将使用全局中间件\n\n常用bearer-jwt"
        },
        "paths": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/YaoHttp.Path"
          },
          "description": "API 列表。具体查看 `Object Path` 数据结构"
        },
        "$schema": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "YaoHttp.Path": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string",
          "description": "标签"
        },
        "description": {
          "type": "string",
          "description": "描述"
        },
        "path": {
          "type": "string",
          "description": "API 路由名称。完整路由地址为 `/api/<group>/<path>` ，变量使用 `:` 声明，如 `/api/user/find/:id`, 可以使用 `$param.id` 访问路由请求参数"
        },
        "method": {
          "type": "string",
          "description": "请求类型。许可值 `GET`、`POST`、`PUT`、`DELETE`、 `HEAD`、`OPTIONS`、`Any`. 其中 `Any` 将响应任何类型的请求"
        },
        "process": {
          "type": "string",
          "description": "调用处理器 `process`"
        },
        "guard": {
          "type": "string",
          "description": "API 中间件. 如不设置，默认使用全局中间件。如不希望使用全局中间件，可将数值设置为 `-` 。|\n\n常用bearer-jwt"
        },
        "in": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "请求参数表，将作为 `process` 的输入参数(`args`)。可以引用传入参数，可以为空数组 [查看输入参数](#输入参数)"
        },
        "out": {
          "$ref": "#/definitions/YaoHttp.Out",
          "description": "请求响应结果定义。 具体查看 `Object Out` 数据结构"
        }
      },
      "required": [
        "path",
        "method",
        "process"
      ],
      "additionalProperties": false
    },
    "YaoHttp.Out": {
      "type": "object",
      "properties": {
        "status": {
          "type": "number",
          "description": "请求响应状态码"
        },
        "type": {
          "type": "string",
          "description": "请求响应 Content Type"
        },
        "body": {
          "description": "请求响应内容"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "请求响应 Headers"
        }
      },
      "required": [
        "status"
      ],
      "additionalProperties": false
    }
  }
}