openapi: 3.0.0 info: description: Mock API for vue-typescript-admin-template. version: 1.0.0 title: Mock API contact: email: armourcy@email.com license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: /mock-api/v1 tags: - name: articles description: Articles data related api. - name: roles description: Roles related api. - name: transactions description: Transactions data related api. - name: users description: Users related api. paths: /articles: get: tags: - articles summary: Get Article List description: Return a list of articles. operationId: getArticles parameters: - name: importance in: query description: Used to filter articles by importance. schema: $ref: '#/components/schemas/Article/properties/importance' - name: title in: query description: Used to filter articles by matched title substring. schema: $ref: '#/components/schemas/Article/properties/title' - name: type in: query description: Used to filter articles by type. schema: $ref: '#/components/schemas/Article/properties/type' - name: page in: query description: The wanted page number (one page). schema: type: integer format: int32 minimum: 1 - name: limit in: query description: The maximum number of articles returned for one page. schema: type: integer format: int32 minimum: 0 maximum: 50 - name: sort in: query description: Optional sorting order for articles. schema: type: string enum: - +id - -id responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: total: type: integer format: int32 items: type: array items: $ref: '#/components/schemas/Article' post: tags: - articles summary: Create New Article description: Create a new article. operationId: createArticle security: - AccessTokenAuth: [] parameters: - name: article in: query required: true description: The data for new article. schema: $ref: '#/components/schemas/Article' responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: article: $ref: '#/components/schemas/Article' 401: $ref: '#/components/responses/Unauthorized' /articles/{id}: get: tags: - articles summary: Get Article Detail description: Get article detail by ID. operationId: getArticle security: - AccessTokenAuth: [] parameters: - name: id in: path required: true description: Article id. schema: type: integer format: int64 responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: article: $ref: '#/components/schemas/Article' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' put: tags: - articles summary: Update Article Detail description: Update article deatail by ID. operationId: updateArticle security: - AccessTokenAuth: [] parameters: - name: id in: path required: true description: Article id. schema: type: integer format: int64 - name: article in: query required: true description: data for the updated article. schema: $ref: '#/components/schemas/Article' responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: article: $ref: '#/components/schemas/Article' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' delete: tags: - articles summary: Delete Article description: Delete article by ID. operationId: deleteArticle security: - AccessTokenAuth: [] parameters: - name: id in: path required: true description: Article id. schema: type: integer format: int64 responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' /pageviews: get: tags: - articles summary: Get Pageviews Data description: Return a list of pageviews for each platforms. operationId: getPageviews responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: pageviews: type: array items: $ref: '#/components/schemas/Pageviews' /transactions: get: tags: - transactions summary: Get Transaction List description: Return a list of transaction. operationId: getTransactions responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: total: type: integer format: int32 items: type: array items: $ref: '#/components/schemas/Transaction' /roles: get: tags: - roles summary: Get Role List description: Return a list of roles. operationId: getRoles responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: total: type: integer format: int32 items: type: array items: $ref: '#/components/schemas/Role' post: tags: - roles summary: Create New Role description: Create a new role. operationId: createRole security: - AccessTokenAuth: [] parameters: - name: role in: query required: true description: The data for new role. schema: $ref: '#/components/schemas/Role' responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: key: type: integer format: int64 401: $ref: '#/components/responses/Unauthorized' /roles/{id}: put: tags: - roles summary: Update Role Detail description: Update role deatail by ID. operationId: updateRole security: - AccessTokenAuth: [] parameters: - name: id in: path required: true description: Role id (key). schema: type: integer format: int64 - name: role in: query required: true description: The data for updated role. schema: $ref: '#/components/schemas/Role' responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: role: $ref: '#/components/schemas/Role' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' delete: tags: - roles summary: Delete Role description: Delete role by ID. operationId: deleteRole security: - AccessTokenAuth: [] parameters: - name: id in: path required: true description: Role id (key). schema: type: integer format: int64 responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' /routes: get: tags: - roles summary: Get Routes Data description: Return routes object. operationId: getRoutes responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: routes: $ref: '#/components/schemas/Role/properties/routes' /users: get: tags: - users summary: Get users list description: Return a list of users operationId: getUsers security: - AccessTokenAuth: [] parameters: - name: name in: query description: Used to filter users by matched username substring schema: type: string responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: items: type: array items: $ref: '#/components/schemas/User' 401: $ref: '#/components/responses/Unauthorized' /users/register: post: tags: - users summary: Create user description: This can only be done by the logged in user. operationId: register parameters: - name: user in: query required: true description: The data for created user. schema: $ref: '#/components/schemas/User' responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 /users/login: post: tags: - users summary: Logs user into the system description: Use username and password to login. operationId: login parameters: - name: username in: query required: true description: The user name for login. schema: $ref: '#/components/schemas/User/properties/username' - name: password in: query required: true description: The password for login in clear text. schema: $ref: '#/components/schemas/User/properties/password' responses: 200: description: OK headers: X-Rate-Limit: schema: type: integer format: int32 description: calls per hour allowed by the user. X-Expires-After: schema: type: string format: date-time description: date in UTC when token expires. content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: accessToken: type: string example: admin-token 400: $ref: '#/components/responses/InvalidUser' /users/logout: post: tags: - users summary: Logs out current logged in user session description: Log out current session. operationId: logout responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 /users/{username}: get: tags: - users summary: Get user by user name description: Get user by user name. operationId: getUserByName security: - AccessTokenAuth: [] parameters: - name: username in: path required: true description: The name that needs to be fetched. schema: type: string responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: user: $ref: '#/components/schemas/User' 400: $ref: '#/components/responses/InvalidUser' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' put: tags: - users summary: Updated user description: This can only be done by the logged in user. operationId: updateUser security: - AccessTokenAuth: [] parameters: - name: username in: path required: true description: Name that need to be updated. schema: type: string - name: user in: query required: true description: The data for updated user. schema: $ref: "#/components/schemas/User" responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: user: $ref: '#/components/schemas/User' 400: $ref: '#/components/responses/InvalidUser' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' delete: tags: - users summary: Delete user description: This can only be done by the logged in user. operationId: deleteUser security: - AccessTokenAuth: [] parameters: - name: username in: path required: true description: The name that needs to be deleted. schema: type: string responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 400: $ref: '#/components/responses/InvalidUser' 401: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' /users/info: post: tags: - users summary: Get current user info description: This can only be done by the logged in user. operationId: getUserInfo security: - AccessTokenAuth: [] responses: 200: description: OK content: application/json: schema: type: object properties: code: type: integer format: int32 data: type: object properties: user: $ref: '#/components/schemas/User' 401: $ref: '#/components/responses/Unauthorized' components: securitySchemes: AccessTokenAuth: type: apiKey in: header name: X-Access-Token responses: NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' InvalidUser: description: Invalid username supplied content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object properties: code: type: string message: type: string required: - code - message Article: type: object properties: id: type: integer format: int64 status: type: string enum: - draft - published - deleted title: type: string example: IG Won World Championship abstractContent: type: string example: Invictus Gaming sweeps Fnatic 3-0 to win League of Legends World Championship fullContent: type: string example: Article details goes here... sourceURL: type: string format: url example: http://www.espn.com/esports/story/_/id/25164094/invictus-gaming-sweeps-fnatic-3-0-win-league-legends-world-championship imageURL: type: string format: url example: https://a1.espncdn.com/combiner/i?img=%2Fphoto%2F2018%2F1103%2Fr458060_1296x729_16%2D9.jpg&w=920&h=518&scale=crop&cquality=80&location=origin&format=jpg timestamp: $ref: '#/components/schemas/Timestamp' platforms: type: array items: type: string enum: - a-platform - b-platform - c-platform uniqueItems: true disableComment: type: boolean example: false importance: type: integer format: int32 enum: - 1 - 2 - 3 author: type: string example: Chong Guo reviewer: type: string example: Chong Guo type: type: string enum: - CN - US - JP - EU pageviews: $ref: '#/components/schemas/Pageviews/properties/pageviews' required: - id - status - title - timestamp - importance - author Pageviews: type: object properties: key: type: string enum: - PC - Mobile - iOS - Android pageviews: type: integer format: int32 example: 1024 required: - key - pageviews Transaction: type: object properties: orderId: type: string format: uuid timestamp: $ref: '#/components/schemas/Timestamp' username: type: string example: Chong Guo price: type: number format: double status: type: string enum: - success - pending required: - orderId - timestamp - username - price - status Role: type: object properties: key: type: string example: admin name: type: string example: admin description: type: string example: Super Administrator. Have access to view all pages. routes: $ref: '#/components/schemas/AnyValue' required: - key - name - routes User: type: object properties: id: type: integer format: int64 username: type: string example: Armour password: type: string example: 12345678 name: type: string example: Chong Guo email: type: string example: armourcy@gmail.com phone: type: string example: 18888888888 avatar: type: string format: url introduction: type: string example: Always Sunshine roles: type: array items: $ref: '#/components/schemas/Role/properties/key' required: - id - username - password - roles Timestamp: oneOf: - type: integer format: int32 example: 1559605283 - type: string format: date-time example: 2017-07-21T17:32:28Z AnyValue: {}