2024-09-12 22:01:00 +00:00
|
|
|
openapi: 3.0.0
|
|
|
|
info:
|
|
|
|
title: Project Management API
|
|
|
|
description: An API for Managing Internal tools
|
|
|
|
version: 1.0.0
|
|
|
|
servers:
|
|
|
|
- url: /api/v1
|
2024-09-27 10:17:17 +00:00
|
|
|
security:
|
|
|
|
- JWTAuth: []
|
2024-09-12 22:01:00 +00:00
|
|
|
|
|
|
|
components:
|
2024-09-27 10:17:17 +00:00
|
|
|
securitySchemes:
|
|
|
|
JWTAuth:
|
|
|
|
type: http
|
|
|
|
scheme: bearer
|
|
|
|
bearerFormat: JWT
|
2024-10-02 06:48:15 +00:00
|
|
|
schemas:
|
|
|
|
ProjectInfo:
|
2024-09-12 22:01:00 +00:00
|
|
|
type: object
|
2024-10-02 06:48:15 +00:00
|
|
|
properties:
|
|
|
|
id:
|
|
|
|
type: integer
|
|
|
|
format: int64
|
|
|
|
name:
|
2024-09-12 22:01:00 +00:00
|
|
|
type: string
|
2024-10-02 06:48:15 +00:00
|
|
|
GetAllProjectsDTO:
|
|
|
|
type: array
|
|
|
|
items:
|
|
|
|
$ref: "#/components/schemas/ProjectInfo"
|
2024-10-07 13:53:26 +00:00
|
|
|
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
|
|
|
|
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
|
2024-10-21 10:58:41 +00:00
|
|
|
AddEmployeeDTO:
|
|
|
|
type: object
|
|
|
|
properties:
|
|
|
|
employeeId:
|
|
|
|
type: integer
|
|
|
|
format: int64
|
|
|
|
qualificationId:
|
|
|
|
type: integer
|
|
|
|
format: int64
|
2024-10-22 16:15:14 +00:00
|
|
|
EmployeeDTO:
|
|
|
|
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/QualificationDTO'
|
|
|
|
QualificationDTO:
|
|
|
|
type: object
|
|
|
|
properties:
|
|
|
|
skill:
|
|
|
|
type: string
|
|
|
|
id:
|
|
|
|
type: integer
|
|
|
|
format: int64
|
|
|
|
GetEmployeesByProjectDTO:
|
|
|
|
type: object
|
|
|
|
properties:
|
|
|
|
employees:
|
|
|
|
type: array
|
|
|
|
items:
|
|
|
|
$ref: "#/components/schemas/EmployeeDTO"
|
2024-09-12 22:01:00 +00:00
|
|
|
responses:
|
2024-10-21 20:24:48 +00:00
|
|
|
Ok:
|
|
|
|
description: "OK"
|
2024-10-07 13:53:26 +00:00
|
|
|
Unauthorized:
|
|
|
|
description: "Unauthorized"
|
|
|
|
NotFound:
|
|
|
|
description: "Not Found"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
2024-10-07 13:54:06 +00:00
|
|
|
Conflict:
|
|
|
|
description: "Conflict"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
|
|
|
UnprocessableContent:
|
|
|
|
description: "Unprocessable Content"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
2024-09-12 22:01:00 +00:00
|
|
|
InternalError:
|
|
|
|
description: "Internal Server Error"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
2024-10-07 13:54:06 +00:00
|
|
|
ServiceUnavailable:
|
|
|
|
description: "Service Unavailable"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
2024-09-12 22:01:00 +00:00
|
|
|
paths:
|
2024-10-02 06:48:15 +00:00
|
|
|
/project:
|
2024-09-12 22:01:00 +00:00
|
|
|
get:
|
2024-10-02 06:48:15 +00:00
|
|
|
operationId: "getAllProjects"
|
|
|
|
description: "Get a List of all Projects"
|
2024-09-12 22:01:00 +00:00
|
|
|
responses:
|
|
|
|
200:
|
2024-10-02 08:02:10 +00:00
|
|
|
description: "Returns a List of all Projects"
|
2024-09-12 22:01:00 +00:00
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
2024-10-02 06:48:15 +00:00
|
|
|
$ref: "#/components/schemas/GetAllProjectsDTO"
|
|
|
|
401:
|
2024-10-07 13:53:26 +00:00
|
|
|
$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"
|
2024-10-07 13:54:06 +00:00
|
|
|
409:
|
|
|
|
$ref: "#/components/responses/Conflict"
|
|
|
|
422:
|
|
|
|
$ref: "#/components/responses/UnprocessableContent"
|
2024-09-12 22:01:00 +00:00
|
|
|
500:
|
2024-10-09 08:49:49 +00:00
|
|
|
$ref: "#/components/responses/InternalError"
|
2024-10-07 13:54:06 +00:00
|
|
|
503:
|
|
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
|
|
|
|
|
|
|
2024-10-09 08:49:49 +00:00
|
|
|
/project/{id}:
|
2024-10-21 10:58:41 +00:00
|
|
|
post:
|
|
|
|
operationId: "addEmployee"
|
|
|
|
description: "Adds an employee to a specific Project"
|
|
|
|
parameters:
|
|
|
|
- in: path
|
|
|
|
name: id
|
|
|
|
schema:
|
|
|
|
type: integer
|
|
|
|
format: int64
|
|
|
|
required: true
|
|
|
|
requestBody:
|
2024-10-22 16:15:14 +00:00
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
|
|
|
$ref: "#/components/schemas/AddEmployeeDTO"
|
2024-10-21 10:58:41 +00:00
|
|
|
responses:
|
|
|
|
204:
|
|
|
|
description: "Employee successfully added to the specific Project"
|
|
|
|
401:
|
|
|
|
$ref: "#/components/responses/Unauthorized"
|
|
|
|
404:
|
|
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
409:
|
2024-10-22 16:15:14 +00:00
|
|
|
$ref: "#/components/responses/Conflict"
|
2024-10-21 10:58:41 +00:00
|
|
|
422:
|
|
|
|
$ref: "#/components/responses/UnprocessableContent"
|
|
|
|
500:
|
|
|
|
$ref: "#/components/responses/InternalError"
|
|
|
|
503:
|
|
|
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
|
|
|
2024-10-09 08:49:49 +00:00
|
|
|
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:
|
2024-10-07 13:54:06 +00:00
|
|
|
$ref: "#/components/responses/Unauthorized"
|
2024-10-09 08:49:49 +00:00
|
|
|
404:
|
|
|
|
description: "Project not found"
|
|
|
|
content:
|
|
|
|
text/plain:
|
|
|
|
schema:
|
|
|
|
type: string
|
|
|
|
500:
|
|
|
|
$ref: "#/components/responses/InternalError"
|
2024-10-21 20:24:48 +00:00
|
|
|
|
|
|
|
/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:
|
2024-10-22 16:15:14 +00:00
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
|
|
|
$ref: "#/components/schemas/GetEmployeesByProjectDTO"
|
|
|
|
description: 'Get a List of all Employees from a specific Project '
|
2024-10-21 20:24:48 +00:00
|
|
|
404:
|
|
|
|
$ref: '#/components/responses/NotFound'
|
|
|
|
500:
|
|
|
|
$ref: "#/components/responses/InternalError"
|