diff --git a/docs/api.yml b/docs/api.yml index 5ce5201b64435ebad3524a6c8463092d9a221eb9..1213e690eb4ffc100a340dd4d2b7c38a2d5b56a0 100644 --- a/docs/api.yml +++ b/docs/api.yml @@ -6,11 +6,6 @@ info: description: The StorageLeaf API version: "2.7.0" title: StorageLeaf API -tags: - - name: admins - description: Secured Admin-only calls - - name: public - description: Operations available to the public paths: /version: @@ -26,752 +21,39 @@ paths: application/json: schema: $ref: '#/components/schemas/Version' - /login: - post: - tags: - - public - summary: Gets a bearer JSON Web Token - operationId: login - requestBody: - description: Credentials - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Credentials' - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/TokenResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - - /roadmaps: - get: - tags: - - public - summary: Gets all roadmaps - operationId: roadmaps - responses: - '200': - description: All available roadmaps - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Roadmap' - /roadmap/{roadmapID}: - get: - tags: - - public - summary: Gets a specific roadmap - operationId: roadmap - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - responses: - '200': - description: The roadmap - content: - application/json: - schema: - $ref: '#/components/schemas/Roadmap' - delete: - tags: - - admins - description: Deletes a roadmap based on the given ID - operationId: deleteRoadmap - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - /roadmap: - post: - tags: - - admins - summary: Adds a new roadmap - operationId: addRoadmap - requestBody: - description: Roadmap to add - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NewRoadmap' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - put: - tags: - - admins - summary: Updates a roadmap - operationId: updateRoadmap - requestBody: - description: Roadmap to update - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Roadmap' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - /roadmap/{roadmapID}/full: - get: - tags: - - public - summary: Gets a specific roadmap with all milestones, tasks and sub tasks - operationId: roadmapFull - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - responses: - '200': - description: The roadmap - content: - application/json: - schema: - $ref: '#/components/schemas/RoadmapFull' - - /milestones/{roadmapID}: - get: - tags: - - public - summary: Gets all milestones for a roadmap - operationId: milestones - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - responses: - '200': - description: All milestones for the given roadmap ID - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Milestone' - /milestones/{roadmapID}/open: - get: - tags: - - public - summary: Gets all open milestones for a roadmap - operationId: openMilestones - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - responses: - '200': - description: All open milestones for the given roadmap ID - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Milestone' - /milestones/{roadmapID}/latest: - get: - tags: - - public - summary: Gets the lastest finished milestone for a roadmap - operationId: latestMilestone - parameters: - - in: path - name: roadmapID - description: The roadmap ID - required: true - schema: - type: integer - responses: - '200': - description: The latest finished milestone for the given roadmap ID - content: - application/json: - schema: - $ref: '#/components/schemas/Milestone' - /milestone/{milestoneID}: - get: - tags: - - public - summary: Gets a specific milestone - operationId: milestone - parameters: - - in: path - name: milestoneID - description: The milestone ID - required: true - schema: - type: string - responses: - '200': - description: The milestone - content: - application/json: - schema: - $ref: '#/components/schemas/Milestone' - delete: - tags: - - admins - description: Deletes a milestone based on the given ID - operationId: deleteMilestone - parameters: - - in: path - name: milestoneID - description: The milestone ID - required: true - schema: - type: integer - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - /milestone: - post: - tags: - - admins - summary: Adds a new milestone - operationId: addMilestone - requestBody: - description: Milestone to add - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NewMilestone' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - put: - tags: - - admins - summary: Updates a milestone - operationId: updateMilestone - requestBody: - description: Milestone to update - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Milestone' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - - /milestone/{milestoneID}/close: - post: - tags: - - admins - summary: Closes a milestone and all corresponding tasks and sub tasks - operationId: closeMilestone - parameters: - - in: path - name: milestoneID - description: The milestone ID - required: true - schema: - type: integer - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - - /tasks/{milestoneID}: - get: - tags: - - public - summary: Gets all tasks for a milestone - operationId: tasks - parameters: - - in: path - name: milestoneID - description: The milestone ID - required: true - schema: - type: integer - responses: - '200': - description: All tasks for the given milestone ID - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Task' - /tasks/{milestoneID}/open: - get: - tags: - - public - summary: Gets all open tasks for a milestone - operationId: openTasks - parameters: - - in: path - name: milestoneID - description: The milestone ID - required: true - schema: - type: integer - responses: - '200': - description: All open tasks for the given milestone ID - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Task' - /task/{taskID}: - get: - tags: - - public - summary: Gets a specific task - operationId: task - parameters: - - in: path - name: taskID - description: The task ID - required: true - schema: - type: string - responses: - '200': - description: The task - content: - application/json: - schema: - $ref: '#/components/schemas/Task' - delete: - tags: - - admins - description: Deletes a task based on the given ID - operationId: deleteTask - parameters: - - in: path - name: taskID - description: The task ID - required: true - schema: - type: integer - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - /task: - post: - tags: - - admins - summary: Adds a new task - operationId: addTask - requestBody: - description: Task to add - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NewTask' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - put: - tags: - - admins - summary: Updates a task - operationId: updateTask - requestBody: - description: Task to update - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Task' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - - /subtasks/{taskID}: + /devices: get: - tags: - - public - summary: Gets all sub taks for a task - operationId: substasks - parameters: - - in: path - name: taskID - description: The task ID - required: true - schema: - type: integer + summary: Gets all devices + operationId: devices responses: '200': - description: All sub tasks for the given task ID + description: All available devices content: application/json: schema: type: array items: - $ref: '#/components/schemas/SubTask' - /subtasks/{taskID}/open: + $ref: '#/components/schemas/Device' + /device/{deviceName}: get: - tags: - - public - summary: Gets all open sub taks for a task - operationId: openSubtasks + summary: Gets a specific device + operationId: device parameters: - in: path - name: taskID - description: The task ID - required: true - schema: - type: integer - responses: - '200': - description: All open sub tasks for the given task ID - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/SubTask' - /subtask/{subtaskID}: - get: - tags: - - public - summary: Gets a specific sub task - operationId: subtask - parameters: - - in: path - name: subtaskID - description: The sub task ID + name: deviceName + description: The device name required: true schema: type: string responses: '200': - description: The sub task - content: - application/json: - schema: - $ref: '#/components/schemas/SubTask' - delete: - tags: - - admins - description: Deletes a sub task based on the given ID - operationId: deleteSubTask - parameters: - - in: path - name: subtaskID - description: The sub task ID - required: true - schema: - type: integer - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - /subtask: - post: - tags: - - admins - summary: Adds a new sub task - operationId: addSubTask - requestBody: - description: Sub task to add - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NewSubTask' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - put: - tags: - - admins - summary: Updates a sub task - operationId: updateSubTask - requestBody: - description: Sub task to update - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SubTask' - security: - - BearerAuth: [] - responses: - '200': - description: success response - content: - application/json: - schema: - $ref: '#/components/schemas/SuccessResponse' - '401': - description: unauthorized response - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - default: - description: error response + description: The device content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' + $ref: '#/components/schemas/Device' components: - securitySchemes: - BearerAuth: - type: http - scheme: bearer - bearerFormat: JWT - schemas: Version: type: object @@ -791,258 +73,19 @@ components: format: date example: "30.05.19" - Credentials: - type: object - required: - - username - - password - properties: - username: - type: string - example: "admin" - password: - type: string - example: "123" - - Roadmap: + Device: type: object required: - ID - - Projectname - properties: - ID: - type: integer - example: 1 - Projectname: - type: string - example: "Example Roadmap" - - RoadmapFull: - allOf: - - $ref: '#/components/schemas/Roadmap' - - type: object - properties: - milestones: - type: array - items: - allOf: - - $ref: '#/components/schemas/Milestone' - - type: object - properties: - tasks: - type: array - items: - allOf: - - $ref: '#/components/schemas/Task' - - type: object - properties: - subtasks: - type: array - items: - $ref: '#/components/schemas/SubTask' - - NewRoadmap: - type: object - required: - - ID - - Projectname + - name properties: ID: type: integer example: 1 Projectname: type: string - example: "Example Roadmap" - - Milestone: - type: object - required: - - ID - - RoadmapID - - VersionCode - - VersionName - - Title - - DueDate - - CompletionDate - - Status - properties: - ID: - type: integer - example: 1 - RoadmapID: - type: integer - example: 2 - VersionCode: - type: integer - example: 3 - VersionName: - type: string - example: "v1.0.0" - Title: - type: string - example: "My awesome milestone" - DueDate: - type: string - format: date - example: "2019-05-30" - CompletionDate: - type: string - format: date - example: "2019-05-30" - Status: - type: integer - enum: - - 0 - - 1 - - NewMilestone: - type: object - required: - - RoadmapID - - VersionCode - - VersionName - - Title - - DueDate - - CompletionDate - - Status - properties: - RoadmapID: - type: integer - example: 2 - VersionCode: - type: integer - example: 3 - VersionName: - type: string - example: "v1.0.0" - Title: - type: string - example: "My awesome milestone" - DueDate: - type: string - format: date - example: "2019-05-30" - CompletionDate: - type: string - format: date - example: "2019-05-30" - Status: - type: integer - enum: - - 0 - - 1 - - Task: - type: object - required: - - ID - - MilestoneID - - Title - - Description - - Status - properties: - ID: - type: integer - example: 1 - MilestoneID: - type: integer - example: 2 - Title: - type: string - example: "My awesome task" - Description: - type: string - example: "Lorem Ipsum dolor sit amet" - Status: - type: integer - enum: - - 0 - - 1 + example: "My Device" - NewTask: - type: object - required: - - MilestoneID - - Title - - Description - - Status - properties: - MilestoneID: - type: integer - example: 2 - Title: - type: string - example: "My awesome task" - Description: - type: string - example: "Lorem Ipsum dolor sit amet" - Status: - type: integer - enum: - - 0 - - 1 - - SubTask: - type: object - required: - - ID - - TaskID - - Title - - Description - - Status - properties: - ID: - type: integer - example: 1 - TaskID: - type: integer - example: 2 - Title: - type: string - example: "My awesome sub task" - Description: - type: string - example: "Lorem Ipsum dolor sit amet" - Status: - type: integer - enum: - - 0 - - 1 - - NewSubTask: - type: object - required: - - TaskID - - Title - - Description - - Status - properties: - TaskID: - type: integer - example: 2 - Title: - type: string - example: "My awesome sub task" - Description: - type: string - example: "Lorem Ipsum dolor sit amet" - Status: - type: integer - enum: - - 0 - - 1 - - UnauthorizedResponse: - description: Access token is missing or invalid - properties: - msg: - type: string - example: "Missing Authorization Header" - TokenResponse: - description: JSON web token - properties: - access_token: - type: string SuccessResponse: required: - success