Dominik Säume
6b37fe7ae4
All checks were successful
Quality Check / Validate OAS (push) Successful in 50s
Quality Check / Validate OAS (pull_request) Successful in 1m3s
Quality Check / Linting (push) Successful in 2m10s
Quality Check / Linting (pull_request) Successful in 2m12s
Quality Check / Testing (push) Successful in 2m23s
Quality Check / Static Analysis (push) Successful in 2m29s
Quality Check / Testing (pull_request) Successful in 2m20s
Quality Check / Static Analysis (pull_request) Successful in 2m24s
368 lines
9.1 KiB
YAML
368 lines
9.1 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: Project Management API
|
|
description: An API for Managing Internal tools
|
|
version: 1.0.0
|
|
servers:
|
|
- url: /api/v1
|
|
security:
|
|
- JWTAuth: []
|
|
|
|
components:
|
|
securitySchemes:
|
|
JWTAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|
|
schemas:
|
|
ProjectInfo:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int64
|
|
name:
|
|
type: string
|
|
GetAllProjectsDTO:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ProjectInfo"
|
|
CreateProjectDTO:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
goal:
|
|
type: string
|
|
customerId:
|
|
type: integer
|
|
format: int64
|
|
administratorId:
|
|
type: integer
|
|
format: int64
|
|
start:
|
|
type: string
|
|
format: date-time
|
|
plannedEnd:
|
|
type: string
|
|
format: date-time
|
|
UpdateProjectDTO:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
goal:
|
|
type: string
|
|
customerId:
|
|
type: integer
|
|
format: int64
|
|
administratorId:
|
|
type: integer
|
|
format: int64
|
|
start:
|
|
type: string
|
|
format: date-time
|
|
plannedEnd:
|
|
type: string
|
|
format: date-time
|
|
CreatedProjectDTO:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int64
|
|
name:
|
|
type: string
|
|
goal:
|
|
type: string
|
|
customerId:
|
|
type: integer
|
|
format: int64
|
|
administratorId:
|
|
type: integer
|
|
format: int64
|
|
start:
|
|
type: string
|
|
format: date-time
|
|
plannedEnd:
|
|
type: string
|
|
format: date-time
|
|
AddEmployeeDTO:
|
|
type: object
|
|
properties:
|
|
employeeId:
|
|
type: integer
|
|
format: int64
|
|
qualificationId:
|
|
type: integer
|
|
format: int64
|
|
Employee:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int64
|
|
lastName:
|
|
type: string
|
|
firstName:
|
|
type: string
|
|
street:
|
|
type: string
|
|
postcode:
|
|
maxLength: 5
|
|
minLength: 5
|
|
type: string
|
|
city:
|
|
type: string
|
|
phone:
|
|
type: string
|
|
skillSet:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Qualification'
|
|
Qualification:
|
|
type: object
|
|
properties:
|
|
skill:
|
|
type: string
|
|
id:
|
|
type: integer
|
|
format: int64
|
|
ProjectEmployeesDTO:
|
|
type: object
|
|
properties:
|
|
employees:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Employee"
|
|
responses:
|
|
Unauthorized:
|
|
description: "Unauthorized"
|
|
NotFound:
|
|
description: "Not Found"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
Conflict:
|
|
description: "Conflict"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
UnprocessableContent:
|
|
description: "Unprocessable Content"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
InternalError:
|
|
description: "Internal Server Error"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
ServiceUnavailable:
|
|
description: "Service Unavailable"
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
paths:
|
|
/project:
|
|
get:
|
|
operationId: "getAllProjects"
|
|
description: "Get a List of all Projects"
|
|
responses:
|
|
200:
|
|
description: "Returns a List of all Projects"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GetAllProjectsDTO"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
post:
|
|
operationId: "CreateProject"
|
|
description: "Creates a new Project"
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CreateProjectDTO"
|
|
responses:
|
|
201:
|
|
description: "Project created successfully"
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CreatedProjectDTO"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
409:
|
|
$ref: "#/components/responses/Conflict"
|
|
422:
|
|
$ref: "#/components/responses/UnprocessableContent"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
503:
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
|
|
/project/{id}:
|
|
post:
|
|
operationId: "addEmployee"
|
|
description: "Adds an employee to a specific Project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AddEmployeeDTO"
|
|
responses:
|
|
204:
|
|
description: "Employee successfully added to the specific Project"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
409:
|
|
$ref: "#/components/responses/Conflict"
|
|
422:
|
|
$ref: "#/components/responses/UnprocessableContent"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
503:
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
put:
|
|
operationId: "updateProject"
|
|
description: "Updates a project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UpdateProjectDTO"
|
|
responses:
|
|
204:
|
|
description: "Project updated successfully"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
409:
|
|
$ref: "#/components/responses/Conflict"
|
|
422:
|
|
$ref: "#/components/responses/UnprocessableContent"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
503:
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
delete:
|
|
operationId: "deleteProject"
|
|
description: "Delete a specific Project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: "Deletes a specific Project"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
/project/{id}/completed:
|
|
post:
|
|
operationId: "completeProject"
|
|
description: "Complete a specific project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: "Completed"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
|
|
/project/{id}/employee/{employeeId}:
|
|
delete:
|
|
operationId: "removeEmployeeFromProject"
|
|
description: "Removes an employee from a Project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
- in: path
|
|
name: employeeId
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: "Deletes the employee from the Project"
|
|
401:
|
|
$ref: "#/components/responses/Unauthorized"
|
|
404:
|
|
$ref: "#/components/responses/NotFound"
|
|
409:
|
|
$ref: "#/components/responses/Conflict"
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|
|
503:
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
|
|
/project/{id}/employees:
|
|
get:
|
|
description: "getAllEmployees"
|
|
operationId: "Get a List of all Employees from a specific Project"
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
required: true
|
|
responses:
|
|
200:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectEmployeesDTO"
|
|
description: 'Get a List of all Employees from a specific Project '
|
|
404:
|
|
$ref: '#/components/responses/NotFound'
|
|
500:
|
|
$ref: "#/components/responses/InternalError"
|