|
@@ -0,0 +1,337 @@
|
|
|
+openapi: 3.0.1
|
|
|
+info:
|
|
|
+ title: Project API
|
|
|
+ description: Latihan Project API
|
|
|
+ version: 2.0.0
|
|
|
+servers:
|
|
|
+- url: http://localhost:8080/api/v1
|
|
|
+tags:
|
|
|
+- name: projects
|
|
|
+ description: everything project
|
|
|
+- name: platforms
|
|
|
+ description: everything platform
|
|
|
+paths:
|
|
|
+ /projects:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - projects
|
|
|
+ summary: find all project
|
|
|
+ description: return all project
|
|
|
+ operationId: getProject
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ $ref: '#/components/responses/200AP'
|
|
|
+ 204:
|
|
|
+ $ref: '#/components/responses/204'
|
|
|
+ post:
|
|
|
+ tags:
|
|
|
+ - projects
|
|
|
+ summary: Add new Project
|
|
|
+ description: Add new Project
|
|
|
+ operationId: addProject
|
|
|
+ requestBody:
|
|
|
+ $ref: '#/components/requestBodies/Project'
|
|
|
+ responses:
|
|
|
+ 201:
|
|
|
+ $ref: '#/components/responses/201'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ /projects/{projectId}:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - projects
|
|
|
+ summary: find project by ID
|
|
|
+ description: return project
|
|
|
+ operationId: getProjectById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/projectPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ $ref: '#/components/responses/200SP'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ put:
|
|
|
+ tags:
|
|
|
+ - projects
|
|
|
+ summary: update existing project by ID
|
|
|
+ description: update project
|
|
|
+ operationId: updateProjectById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/projectPath'
|
|
|
+ requestBody:
|
|
|
+ $ref: '#/components/requestBodies/Project'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ $ref: '#/components/responses/200AP'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ delete:
|
|
|
+ tags:
|
|
|
+ - projects
|
|
|
+ summary: Deletes a project
|
|
|
+ description: delete a project
|
|
|
+ operationId: deleteProject
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/projectPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ 205:
|
|
|
+ description: Unable to delete. Data is used.
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ /platforms:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - platforms
|
|
|
+ summary: find all platform of a project
|
|
|
+ description: return all platform of a project
|
|
|
+ operationId: getPlatformByProjectId
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/projectQuery'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: array
|
|
|
+ items:
|
|
|
+ $ref: '#/components/schemas/Platform'
|
|
|
+ 204:
|
|
|
+ $ref: '#/components/responses/204'
|
|
|
+ post:
|
|
|
+ tags:
|
|
|
+ - platforms
|
|
|
+ summary: Add new platform for a project
|
|
|
+ description: add new platform for a project
|
|
|
+ operationId: addPlatformByProjectId
|
|
|
+ parameters:
|
|
|
+ - name: project
|
|
|
+ in: query
|
|
|
+ description: Project ID
|
|
|
+ required: true
|
|
|
+ schema:
|
|
|
+ type: integer
|
|
|
+ requestBody:
|
|
|
+ description: Platform object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: web
|
|
|
+ responses:
|
|
|
+ 201:
|
|
|
+ description: record successfully added
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/Platform'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ /platforms/{platformId}:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - platforms
|
|
|
+ summary: find platform by ID
|
|
|
+ description: return platform by ID
|
|
|
+ operationId: getPlatformById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/platformPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/Platform'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ put:
|
|
|
+ tags:
|
|
|
+ - platforms
|
|
|
+ summary: update existing platform by ID
|
|
|
+ description: update platform
|
|
|
+ operationId: updatePlatformById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/platformPath'
|
|
|
+ requestBody:
|
|
|
+ description: Platform object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: web
|
|
|
+ project_id:
|
|
|
+ type: integer
|
|
|
+ example: 1
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/Platform'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ delete:
|
|
|
+ tags:
|
|
|
+ - platforms
|
|
|
+ summary: deletes a platform by ID
|
|
|
+ description: delete a platform by ID
|
|
|
+ operationId: deletePlatformById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/platformPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+components:
|
|
|
+ schemas:
|
|
|
+ Project:
|
|
|
+ required:
|
|
|
+ - id
|
|
|
+ - name
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ id:
|
|
|
+ type: integer
|
|
|
+ uniqueItems: true
|
|
|
+ example: 2
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ uniqueItems: true
|
|
|
+ maximum: 100
|
|
|
+ example: PI
|
|
|
+ description:
|
|
|
+ type: string
|
|
|
+ maximum: 255
|
|
|
+ example: PropInspector
|
|
|
+ Platform:
|
|
|
+ type: object
|
|
|
+ required:
|
|
|
+ - id
|
|
|
+ - name
|
|
|
+ properties:
|
|
|
+ id:
|
|
|
+ type: integer
|
|
|
+ uniqueItems: true
|
|
|
+ example: 3
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ uniqueItems: true
|
|
|
+ maximum: 100
|
|
|
+ example: mobile
|
|
|
+ project_id:
|
|
|
+ $ref: '#/components/schemas/Project'
|
|
|
+ parameters:
|
|
|
+ projectPath:
|
|
|
+ name: projectId
|
|
|
+ in: path
|
|
|
+ description: Project ID
|
|
|
+ required: true
|
|
|
+ schema:
|
|
|
+ type: integer
|
|
|
+ platformPath:
|
|
|
+ name: platformId
|
|
|
+ in: path
|
|
|
+ description: Platform ID
|
|
|
+ required: true
|
|
|
+ schema:
|
|
|
+ type: integer
|
|
|
+ projectQuery:
|
|
|
+ name: project
|
|
|
+ in: query
|
|
|
+ description: Project ID
|
|
|
+ schema:
|
|
|
+ type: integer
|
|
|
+ responses:
|
|
|
+ 200SP:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/Project'
|
|
|
+ 200AP:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: array
|
|
|
+ items:
|
|
|
+ $ref: '#/components/schemas/Project'
|
|
|
+ 201:
|
|
|
+ description: Record Successfully added
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/Project'
|
|
|
+ 204:
|
|
|
+ description: empty data
|
|
|
+ 400:
|
|
|
+ description: invalid data
|
|
|
+ 404:
|
|
|
+ description: ID not found
|
|
|
+ 409:
|
|
|
+ description: duplicate data
|
|
|
+ 413:
|
|
|
+ description: content too large
|
|
|
+ requestBodies:
|
|
|
+ Project:
|
|
|
+ description: Project object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: TM
|
|
|
+ description:
|
|
|
+ type: string
|
|
|
+ example: TelMesengger
|
|
|
+ Platform:
|
|
|
+ description: Platform object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: mobile
|
|
|
+ project_id:
|
|
|
+ $ref: '#/components/schemas/Project'
|