openapi: 3.0.3
info: 
  title: Сервис инвентаризации RenovaTech
  version: 0.0.1
servers:
  - url: http://localhost:8080/api/v1
    description: Dev Server
paths:
  /tools:
    get:
      summary: Метод получения списка инструментов
      tags: 
        - Tools
      operationId: getAllTools
      responses:
        '200':
          description: Успешный ответ со списком инструментов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Tools"
        'default':
          description: Всё нестандартное
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
                
    post:
      summary: Метод создания инструмента
      tags: 
        - Tools
      operationId: createTool
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Tool"
        
      responses:
        '200':
          description: Успешный ответ со списком инструментов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Tool"
        'default':
          description: Всё нестандартное
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
                
  /tools/{id}:
    get:
      summary: Метод получения списка инструментов
      tags: 
        - Tools
      operationId: getToolById
      parameters: 
        - name: id
          in: path
          required: true
          description: Идентификатор инструмента
          example: 77
          schema:
            type: integer
        
      responses:
        '200':
          description: Успешный ответ со списком инструментов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Tool"
        'default':
          description: Всё нестандартное
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
                
    delete:
      summary: Метод удаления инструмента по идентификатору
      tags: 
        - Tools
      operationId: deleteToolById
      parameters: 
        - name: id
          in: path
          required: true
          description: Идентификатор инструмента
          example: 77
          schema:
            type: integer
        
      responses:
        '200':
          description: Успешный ответ со списком инструментов
          content:
            application/json: {}
        'default':
          description: Всё нестандартное
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              
components:
  schemas:
    Tool:
      type: object
      required: 
        - name
        - status
      properties:
        tool_id:
          type: integer
          example: 77
        name:
          type: string
          example: Шуруповерт
        status:
          type: string
          enum:
            - new
            - old
            - broken
          description: Состояние инструмента
        create_date:
          type: string
          format: 2022-07-01T15:00:00+03
    Tools:
      type: array
      items: 
        $ref: "#/components/schemas/Tool"
    Error:
      type: object
      required: 
      - code
      - message
      properties:
        code:
          type: integer
        message:
          type: string
          
    
  