athrainsky 1 năm trước cách đây
mục cha
commit
fe4567ecc0
1 tập tin đã thay đổi với 337 bổ sung0 xóa
  1. 337 0
      swagger3 project.yml

+ 337 - 0
swagger3 project.yml

@@ -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'