|
@@ -2,7 +2,7 @@ openapi: 3.0.1
|
|
|
info:
|
|
|
title: Project API
|
|
|
description: Latihan Project API
|
|
|
- version: 2.0.0
|
|
|
+ version: 3.0.0
|
|
|
servers:
|
|
|
- url: http://localhost:8080/api/v1
|
|
|
tags:
|
|
@@ -10,6 +10,8 @@ tags:
|
|
|
description: everything project
|
|
|
- name: platforms
|
|
|
description: everything platform
|
|
|
+- name: users
|
|
|
+ description: everything user
|
|
|
paths:
|
|
|
/projects:
|
|
|
get:
|
|
@@ -21,6 +23,8 @@ paths:
|
|
|
responses:
|
|
|
200:
|
|
|
$ref: '#/components/responses/200AP'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
post:
|
|
|
tags:
|
|
|
- projects
|
|
@@ -38,6 +42,8 @@ paths:
|
|
|
$ref: '#/components/responses/409'
|
|
|
413:
|
|
|
$ref: '#/components/responses/413'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
/projects/{projectId}:
|
|
|
get:
|
|
|
tags:
|
|
@@ -52,6 +58,8 @@ paths:
|
|
|
$ref: '#/components/responses/200SP'
|
|
|
404:
|
|
|
$ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
put:
|
|
|
tags:
|
|
|
- projects
|
|
@@ -73,6 +81,8 @@ paths:
|
|
|
$ref: '#/components/responses/409'
|
|
|
413:
|
|
|
$ref: '#/components/responses/413'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
delete:
|
|
|
tags:
|
|
|
- projects
|
|
@@ -88,6 +98,8 @@ paths:
|
|
|
description: Unable to delete. Data is used.
|
|
|
404:
|
|
|
$ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
/platforms:
|
|
|
get:
|
|
|
tags:
|
|
@@ -106,6 +118,8 @@ paths:
|
|
|
type: array
|
|
|
items:
|
|
|
$ref: '#/components/schemas/Platform'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
post:
|
|
|
tags:
|
|
|
- platforms
|
|
@@ -140,7 +154,9 @@ paths:
|
|
|
409:
|
|
|
$ref: '#/components/responses/409'
|
|
|
413:
|
|
|
- $ref: '#/components/responses/413'
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
/platforms/{platformId}:
|
|
|
get:
|
|
|
tags:
|
|
@@ -159,6 +175,8 @@ paths:
|
|
|
$ref: '#/components/schemas/Platform'
|
|
|
404:
|
|
|
$ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
put:
|
|
|
tags:
|
|
|
- platforms
|
|
@@ -196,6 +214,8 @@ paths:
|
|
|
$ref: '#/components/responses/409'
|
|
|
413:
|
|
|
$ref: '#/components/responses/413'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
delete:
|
|
|
tags:
|
|
|
- platforms
|
|
@@ -209,6 +229,169 @@ paths:
|
|
|
description: successful operation
|
|
|
404:
|
|
|
$ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
+ /users:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: find all user
|
|
|
+ description: return all user
|
|
|
+ operationId: getUser
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: array
|
|
|
+ items:
|
|
|
+ $ref: '#/components/schemas/User'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
+ post:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: add user
|
|
|
+ description: add new user
|
|
|
+ operationId: AddUser
|
|
|
+ requestBody:
|
|
|
+ description: User object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ username:
|
|
|
+ type: string
|
|
|
+ example: abi
|
|
|
+ password:
|
|
|
+ type: string
|
|
|
+ example: abi
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: abi
|
|
|
+ responses:
|
|
|
+ 201:
|
|
|
+ description: record successfully added
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/User'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ /users/{userId}:
|
|
|
+ get:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: find user by userId
|
|
|
+ description: return user by userId
|
|
|
+ operationId: getUserByUserId
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/UserPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/User'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
+ put:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: update existing user except password
|
|
|
+ description: update user
|
|
|
+ operationId: updateUserByUserId
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/UserPath'
|
|
|
+ requestBody:
|
|
|
+ description: User object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ username:
|
|
|
+ type: string
|
|
|
+ example: abi
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ example: abidzar
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/User'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ 409:
|
|
|
+ $ref: '#/components/responses/409'
|
|
|
+ 413:
|
|
|
+ $ref: '#/components/responses/413'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
+ delete:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: deletes a user by ID
|
|
|
+ description: delete a user by ID
|
|
|
+ operationId: deleteUserById
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/UserPath'
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
+ /users/{userId}/password:
|
|
|
+ put:
|
|
|
+ tags:
|
|
|
+ - users
|
|
|
+ summary: change password
|
|
|
+ description: update user password
|
|
|
+ operationId: updatePassword
|
|
|
+ parameters:
|
|
|
+ - $ref: '#/components/parameters/UserPath'
|
|
|
+ requestBody:
|
|
|
+ description: User object
|
|
|
+ required: true
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ type: object
|
|
|
+ properties:
|
|
|
+ password:
|
|
|
+ type: string
|
|
|
+ example: abi123
|
|
|
+ responses:
|
|
|
+ 200:
|
|
|
+ description: successful operation
|
|
|
+ content:
|
|
|
+ application/json:
|
|
|
+ schema:
|
|
|
+ $ref: '#/components/schemas/User'
|
|
|
+ 400:
|
|
|
+ $ref: '#/components/responses/400'
|
|
|
+ 404:
|
|
|
+ $ref: '#/components/responses/404'
|
|
|
+ security:
|
|
|
+ - basicAuth: []
|
|
|
components:
|
|
|
schemas:
|
|
|
Project:
|
|
@@ -247,6 +430,31 @@ components:
|
|
|
example: mobile
|
|
|
project_id:
|
|
|
$ref: '#/components/schemas/Project'
|
|
|
+ User:
|
|
|
+ type: object
|
|
|
+ required:
|
|
|
+ - id
|
|
|
+ - username
|
|
|
+ - password
|
|
|
+ - name
|
|
|
+ properties:
|
|
|
+ id:
|
|
|
+ type: integer
|
|
|
+ uniqueItems: true
|
|
|
+ example: 4
|
|
|
+ username:
|
|
|
+ type: string
|
|
|
+ uniqueItems: true
|
|
|
+ maximum: 100
|
|
|
+ example: abi
|
|
|
+ password:
|
|
|
+ type: string
|
|
|
+ maximum: 100
|
|
|
+ example: abi123
|
|
|
+ name:
|
|
|
+ type: string
|
|
|
+ maximum: 255
|
|
|
+ example: abidzar
|
|
|
parameters:
|
|
|
projectPath:
|
|
|
name: projectId
|
|
@@ -262,6 +470,13 @@ components:
|
|
|
required: true
|
|
|
schema:
|
|
|
type: integer
|
|
|
+ UserPath:
|
|
|
+ name: userId
|
|
|
+ in: path
|
|
|
+ description: User ID
|
|
|
+ required: true
|
|
|
+ schema:
|
|
|
+ type: integer
|
|
|
projectQuery:
|
|
|
name: project
|
|
|
in: query
|
|
@@ -292,7 +507,7 @@ components:
|
|
|
400:
|
|
|
description: invalid data
|
|
|
404:
|
|
|
- description: ID not found
|
|
|
+ description: not found
|
|
|
409:
|
|
|
description: duplicate data
|
|
|
413:
|
|
@@ -324,4 +539,9 @@ components:
|
|
|
type: string
|
|
|
example: mobile
|
|
|
project_id:
|
|
|
- $ref: '#/components/schemas/Project'
|
|
|
+ $ref: '#/components/schemas/Project'
|
|
|
+ securitySchemes:
|
|
|
+ basicAuth:
|
|
|
+ type: http
|
|
|
+ scheme: basic
|
|
|
+ description: Use `user` / `password` as the test credentials
|