openapi: 3.0.3
info:
  title: Input Service
  description: This is the input interface of the Birbnetes system.
  contact:
    email: tormakristof@tormakristof.eu
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.1.3
servers:
- url: https://birb.k8s.kmlabz.com
tags:
- name: input
  description: Input Service interaction
paths:
  /sample:
    get:
      tags:
      - input
      summary: Get all stored input queries
      operationId: getall
      responses:
        200:
          description: Array of input objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InputResponse'
        404:
          description: No object matching filter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags:
      - input
      summary: uploads a sample into the system
      operationId: uploadFile
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - description
              - file
              properties:
                description:
                  type: object
                  description: Metadata json
                  properties:
                    deviceid:
                      type: string
                    date:
                      type: string
                      format: date
                file:
                  type: string
                  description: Wave file to upload
                  format: binary
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        400:
          description: JSON parse error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        415:
          description: Media type error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        417:
          description: JSON invalid schema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        469:
          description: No file found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        470:
          description: Description missing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /sample/{tagID}:
    get:
      tags:
      - input
      summary: Get input object by ID
      operationId: getInput
      parameters:
      - name: tagID
        in: path
        description: ID of input object file
        required: true
        schema:
          type: string
          format: uuid
      responses:
        200:
          description: input object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InputSingeResponse'
        404:
          description: Tag not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
components:
  schemas:
    InputSingeResponse:
      required:
      - message
      - status
      type: object
      properties:
        status:
          type: string
        message:
          $ref: '#/components/schemas/InputObject'
    InputResponse:
      type: array
      items:
        $ref: '#/components/schemas/InputObject'
    InputObject:
      required:
      - date
      - device_id
      - tag
      type: object
      properties:
        tag:
          type: string
          format: uuid
        date:
          type: string
          format: date
        device_id:
          type: integer
    ApiResponse:
      required:
      - message
      - status
      type: object
      properties:
        status:
          type: string
        message:
          type: string
