zhandao/zero-rails_openapi

View on GitHub
examples/output_example.json

Summary

Maintainability
Test Coverage
{
  "openapi": "3.0.0",
  "info": {
    "version": "0.0.1",
    "title": "Zero Rails APIs",
    "description": "API documentation of Zero-Rails Application."
  },
  "servers": [
    {
      "url": "http://localhost:3000",
      "description": "Main (production) server"
    },
    {
      "url": "http://localhost:3000",
      "description": "Internal staging server for testing"
    }
  ],
  "security": [
    {
      "Token": [

      ]
    }
  ],
  "tags": [
    {
      "name": "Categories"
    },
    {
      "name": "Goods"
    },
    {
      "name": "Inventories"
    },
    {
      "name": "Permissions"
    },
    {
      "name": "Roles"
    },
    {
      "name": "Stores"
    },
    {
      "name": "Users"
    }
  ],
  "paths": {
    "/api/v1/categories": {
      "get": {
        "summary": "GET list of categories.",
        "operationId": "index",
        "tags": [
          "Categories"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "页数,从 1 开始",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "description": "per page, 请求的数据条数",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": ""
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "post": {
        "summary": "POST create a category.",
        "operationId": "create",
        "tags": [
          "Categories"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for creating the specified category",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "名字"
                  },
                  "is_smaller": {
                    "type": "boolean",
                    "description": "icon name"
                  },
                  "icon_name": {
                    "type": "string",
                    "description": "是否二级分类?"
                  },
                  "base_id": {
                    "type": "integer",
                    "description": "一级分类的 id"
                  }
                },
                "required": [
                  "name",
                  "is_smaller"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "600": {
            "description": "create failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/categories/list": {
      "get": {
        "summary": "GET nested list of categories.",
        "operationId": "nested_list",
        "tags": [
          "Categories"
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/categories/{id}": {
      "patch": {
        "summary": "PATCH update the specified category.",
        "operationId": "update",
        "tags": [
          "Categories"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要更新的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for updating the specified category",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "名字"
                  },
                  "is_smaller": {
                    "type": "boolean",
                    "description": "icon name"
                  },
                  "icon_name": {
                    "type": "string",
                    "description": "是否二级分类?"
                  },
                  "base_id": {
                    "type": "integer",
                    "description": "一级分类的 id"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "601": {
            "description": "update failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "delete": {
        "summary": "DELETE the specified category.",
        "operationId": "destroy",
        "tags": [
          "Categories"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "602": {
            "description": "destroy failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/goods": {
      "get": {
        "description": "GET list of goods.",
        "summary": "GET list of goods.",
        "operationId": "index",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "required": false,
            "description": "请求来自的视图,允许值:<br/>1/ 所有物品 (default): all<br/>2/ 上线物品: online<br/>3/ 下线物品: offline",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "online",
                "offline"
              ],
              "default": "all"
            }
          },
          {
            "name": "search_type",
            "in": "query",
            "required": false,
            "description": "搜索的字段名,允许值:<br/>1/ name<br/>2/ creator<br/>3/ category_name<br/>4/ unit<br/>5/ price",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "creator",
                "category_name",
                "unit",
                "price"
              ],
              "as": "field"
            }
          },
          {
            "name": "value",
            "in": "query",
            "required": false,
            "description": "查询词",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_start_at",
            "in": "query",
            "required": false,
            "description": "时间起点, YY-MM-DD (HH:MM:SS, 可选)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "as": "start"
            }
          },
          {
            "name": "created_end_at",
            "in": "query",
            "required": false,
            "description": "时间终点, YY-MM-DD (HH:MM:SS, 可选)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "as": "end"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "页数,从 1 开始",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "description": "per page, 请求的数据条数",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 10
            }
          },
          {
            "name": "export",
            "in": "query",
            "required": false,
            "description": "是否将查询结果导出 Excel 文件",
            "schema": {
              "type": "boolean",
              "examples": [
                {
                  "right_input": {
                    "value": true
                  }
                },
                {
                  "wrong_input": {
                    "value": "wrong input"
                  }
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "unit": {
                            "type": "string"
                          },
                          "price": {
                            "type": "number",
                            "format": "float"
                          },
                          "remarks": {
                            "type": "string"
                          },
                          "pic_path": {
                            "type": "string"
                          },
                          "creator": {
                            "type": "string"
                          },
                          "is_online": {
                            "type": "boolean"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "category_info": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": "string"
                              },
                              "base_category_id": {
                                "type": "integer"
                              },
                              "icon_name": {
                                "type": "string"
                              },
                              "deleted_at": {
                                "type": "string",
                                "format": "date-time"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        },
        "examples": [
          {
            "right_input": {
              "value": {
                "Token": "Token",
                "view": "view",
                "search_type": "search_type",
                "value": "value",
                "created_start_at": "created_start_at",
                "created_end_at": "created_end_at",
                "page": "page",
                "rows": "rows",
                "export": "export"
              }
            }
          },
          {
            "wrong_input": {
              "value": {
                "Token": null,
                "view": null,
                "search_type": null,
                "value": null,
                "created_start_at": null,
                "created_end_at": null,
                "page": null,
                "rows": null,
                "export": null
              }
            }
          }
        ]
      },
      "post": {
        "summary": "POST create a good.",
        "operationId": "create",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for creating the specified good",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "名字"
                  },
                  "category_id": {
                    "type": "integer",
                    "minimum": 1,
                    "as": "cate",
                    "not_permit": true,
                    "description": "子类 id"
                  },
                  "unit": {
                    "type": "string",
                    "description": "单位"
                  },
                  "price": {
                    "type": "number",
                    "format": "float",
                    "minimum": 0,
                    "description": "单价"
                  },
                  "is_online": {
                    "type": "boolean",
                    "description": "是否上线?"
                  },
                  "remarks": {
                    "type": "string",
                    "description": "其他说明"
                  },
                  "pic_path": {
                    "type": "string",
                    "format": "url",
                    "is": "url",
                    "description": "图片路径"
                  }
                },
                "required": [
                  "name",
                  "category_id",
                  "unit",
                  "price"
                ]
              },
              "examples": [
                {
                  "right_input": {
                    "value": {
                      "name": "good1",
                      "category_id": 6,
                      "unit": "unit",
                      "price": 5.7
                    }
                  }
                },
                {
                  "wrong_input": {
                    "value": {
                      "name": "good2",
                      "category_id": 0,
                      "unit": "unit",
                      "price": -1
                    }
                  }
                }
              ]
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "600": {
            "description": "create failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/goods/{id}": {
      "get": {
        "summary": "GET the specified good.",
        "operationId": "show",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "unit": {
                            "type": "string"
                          },
                          "price": {
                            "type": "number",
                            "format": "float"
                          },
                          "remarks": {
                            "type": "string"
                          },
                          "pic_path": {
                            "type": "string"
                          },
                          "creator": {
                            "type": "string"
                          },
                          "is_online": {
                            "type": "boolean"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "category_info": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": "string"
                              },
                              "base_category_id": {
                                "type": "integer"
                              },
                              "icon_name": {
                                "type": "string"
                              },
                              "deleted_at": {
                                "type": "string",
                                "format": "date-time"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "patch": {
        "summary": "PATCH update the specified Good.",
        "operationId": "update",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要更新的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for updating the specified good",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "名字"
                  },
                  "category_id": {
                    "type": "integer",
                    "minimum": 1,
                    "as": "cate",
                    "not_permit": true,
                    "description": "子类 id"
                  },
                  "unit": {
                    "type": "string",
                    "description": "单位"
                  },
                  "price": {
                    "type": "number",
                    "format": "float",
                    "minimum": 0,
                    "description": "单价"
                  },
                  "remarks": {
                    "type": "string",
                    "description": "其他说明"
                  },
                  "pic_path": {
                    "type": "string",
                    "format": "url",
                    "is": "url",
                    "description": "图片路径"
                  },
                  "is_online": {
                    "type": "boolean",
                    "description": "是否上线"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "601": {
            "description": "update failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "delete": {
        "summary": "DELETE the specified good.",
        "operationId": "destroy",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "602": {
            "description": "destroy failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/goods/{id}/change_online": {
      "post": {
        "summary": "POST change online status of the specified good.",
        "operationId": "change_online",
        "tags": [
          "Goods"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要上/下线的物品 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "700": {
            "description": "change online failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/inventories": {
      "get": {
        "description": "GET list of inventories.",
        "summary": "GET list of inventories.",
        "operationId": "index",
        "tags": [
          "Inventories"
        ],
        "parameters": [
          {
            "name": "created_start_at",
            "in": "query",
            "required": false,
            "description": "时间起点, YY-MM-DD (HH:MM:SS, 可选)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "as": "start"
            }
          },
          {
            "name": "created_end_at",
            "in": "query",
            "required": false,
            "description": "时间终点, YY-MM-DD (HH:MM:SS, 可选)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "as": "end"
            }
          },
          {
            "name": "value",
            "in": "query",
            "required": false,
            "description": "查询词",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "页数,从 1 开始",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "description": "per page, 请求的数据条数",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 10
            }
          },
          {
            "name": "store_code",
            "in": "query",
            "required": true,
            "description": "商店代号",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search_type",
            "in": "query",
            "required": false,
            "description": "搜索的字段名,允许值:<br/><br/>1/ name<br/>2/ creator<br/>3/ category_name<br/>4/ unit<br/>5/ price",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "creator",
                "category_name",
                "unit",
                "price"
              ],
              "as": "field"
            }
          },
          {
            "name": "export",
            "in": "query",
            "required": false,
            "description": "是否将查询结果导出 Excel 文件",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": ""
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/permissions": {
      "get": {
        "summary": "GET permissions list of the specified model.",
        "operationId": "index",
        "tags": [
          "Permissions"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "model",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]",
              "default": "User"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "remarks": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "post": {
        "summary": "PATCH update the specified permission.",
        "operationId": "create",
        "tags": [
          "Permissions"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for updating the specified permission",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "name of permission"
                  },
                  "condition": {
                    "type": "string",
                    "default": "true",
                    "description": "暂不必传"
                  },
                  "remarks": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "600": {
            "description": "create failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/permissions/{id}": {
      "delete": {
        "summary": "DELETE the specified permission.",
        "operationId": "destroy",
        "tags": [
          "Permissions"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "602": {
            "description": "destroy failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/roles": {
      "get": {
        "summary": "GET roles list of the specified model",
        "operationId": "index",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "model",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]",
              "default": "User"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "remarks": {
                            "type": "string"
                          },
                          "base_role_id": {
                            "type": "integer"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "post": {
        "summary": "POST create a role",
        "operationId": "create",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for creating the specified role",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "name of role"
                  },
                  "condition": {
                    "type": "string",
                    "default": "true",
                    "description": "暂不必传"
                  },
                  "remarks": {
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "600": {
            "description": "create failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/roles/{id}": {
      "get": {
        "summary": "GET the specified role.",
        "operationId": "show",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "remarks": {
                            "type": "string"
                          },
                          "base_role_id": {
                            "type": "integer"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "delete": {
        "summary": "DELETE the specified role.",
        "operationId": "destroy",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "602": {
            "description": "destroy failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/roles/{id}/permissions": {
      "get": {
        "summary": "GET permissions of specified role",
        "operationId": "permissions",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 role id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/roles/{id}/permissions/modify": {
      "post": {
        "summary": "POST modify permissions to the specified role and then save to db",
        "operationId": "permissions_modify",
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "role id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for modifying permissions to the specified role",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "permission_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "permission_ids"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/stores": {
      "get": {
        "summary": "GET list of stores.",
        "operationId": "index",
        "tags": [
          "Stores"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "偏移量,从 0 开始",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "description": "per page, 请求的数据条数",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "code": {
                            "type": "string"
                          },
                          "addr": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "post": {
        "summary": "POST create a store.",
        "operationId": "create",
        "tags": [
          "Stores"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for creating the specified store",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "商店代号"
                  },
                  "addr": {
                    "type": "string",
                    "description": "对应的商店地址"
                  }
                },
                "required": [
                  "code",
                  "addr"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "600": {
            "description": "create failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/stores/{id}": {
      "get": {
        "summary": "GET the specified store.",
        "operationId": "show",
        "tags": [
          "Stores"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "code": {
                            "type": "string"
                          },
                          "addr": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "patch": {
        "summary": "POST update the specified store.",
        "operationId": "update",
        "tags": [
          "Stores"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要更新的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for updating the specified store",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "商店代号"
                  },
                  "addr": {
                    "type": "string",
                    "description": "对应的商店地址"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "601": {
            "description": "update failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "delete": {
        "summary": "DELETE the specified store.",
        "operationId": "destroy",
        "tags": [
          "Stores"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "602": {
            "description": "destroy failed"
          },
          "-1": {
            "description": "invalid token"
          },
          "-10": {
            "description": "role verification failed"
          },
          "-11": {
            "description": "insufficient permission"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/u/{name}": {
      "get": {
        "summary": "GET the specified user by name.",
        "operationId": "show_via_name",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "required": true,
            "description": "user name",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users": {
      "get": {
        "summary": "GET list of users.",
        "operationId": "index",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "页数,从 1 开始",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "description": "per page, 请求的数据条数",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "password_digest": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "phone_number": {
                            "type": "string"
                          },
                          "deleted_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "post": {
        "summary": "POST user register",
        "operationId": "create",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "description": "for registering user",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "password_confirmation": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone_number": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "password",
                  "password_confirmation"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "700": {
            "description": "invalid info"
          },
          "701": {
            "description": "invalid info"
          },
          "702": {
            "description": "repeated info"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users/login": {
      "post": {
        "summary": "POST user login.",
        "operationId": "login",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "description": "for user login",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "user name"
                  },
                  "password": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "800": {
            "description": "login failed"
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users/{id}": {
      "get": {
        "summary": "GET the specified user.",
        "operationId": "show",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "password_digest": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "phone_number": {
                            "type": "string"
                          },
                          "deleted_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "patch": {
        "summary": "PATCH update the specified User.",
        "operationId": "update",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要更新的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for updating the specified user",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "password_confirmation": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone_number": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      },
      "delete": {
        "summary": "DELETE the specified User.",
        "operationId": "destroy",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要删除的 id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users/{id}/permissions": {
      "get": {
        "summary": "GET permissions of the specified user",
        "operationId": "permissions",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 user id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users/{id}/roles": {
      "get": {
        "summary": "GET roles of the specified user",
        "operationId": "roles",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "要查询的 user id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    },
    "/api/v1/users/{id}/roles/modify": {
      "post": {
        "summary": "POST modify roles to the specified user",
        "operationId": "roles_modify",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "Token",
            "in": "header",
            "required": true,
            "description": "user token",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "user id",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "for modifying roles to the specified user",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "role_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "role_ids"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "default": 200
                    },
                    "msg": {
                      "type": "string",
                      "default": "success"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "timestamp": {
                      "type": "integer",
                      "format": "time",
                      "is": "time"
                    },
                    "language": {
                      "type": "string",
                      "default": "Ruby"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "parameter validation failed"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Token": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}