openapi: 3.0.1
info:
  title: ML Prep API
  version: v1
servers:
  - url: http://{{your_prep_ip_address}}
    description: Mock server
paths:
  /api/v1/authenticate/setup-wizard:
    post:
      tags:
        - Authenticate
      summary: Sets up the configuration wizard
      description: ''
      operationId: SetupWizard
      responses:
        '200':
          description: The setup wizard has already run and/or the login was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponseDto'
              example:
                userName: _userName1_
                userId: 1142c805484f4ffb9f1b92a66b47ef71
                token: >-
                  Z5UmVtb3RlU2V0dGluZ3MiLCJNb2RpZnlCYXNlU2V0dGluZ3MiLCJNb2RpZnlUZWNobmljYWxTZXR0aW5ncyIsIkV4ZWN1dGVWYWxpZGF0ZWRJdGVtcyIsIkV4ZWN1dGVOb25WYWxpZGF0ZWRJdGVtcyIsIkVkaXRTY2hlZHVsZSIsIlZpZXdGdW5jdGlvbnMiLCJWaWV3VXNlcnMiLCJWaWV3Um9sZXMiLCJNb2RpZnlQcmludFNldHRpbmdzIiwiQ3JlYXRlVXNlckRvY3VtZW50cyIsIyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzMTQyOGM4ZmQ0Yzk0MzljYmI3NTAzYzdiMGViOTU0MCIsImdpdmVuX25hbWUiOiJfX21scHJlcF9fIiwicm9sZSI6WyJDaGFuZ2VBY3RpdmVTeXN0ZW1Db25maWd1cmF0aW9uIiwiTW9kaWZ5Um9sZXMiLCJNb2RpZnlVc2VycyIsIk1vZGlmeUxhYm9yYXRvcnlTZXR0aW5ncyIsIk1vZGlmeVYmTVNldHRpbmdzIiwiTW9k
                inactiveLogout: 60
                logoutCountdown: 10
                expiresIn: 5
                passwordExpiresInDays: 0
                notifyPasswordExpiresSoon: false
        '400':
          description: Unable to authenticate
          content:
            application/json:
              schema:
                type: string
  /api/v1/authenticate/kba-password-reset:
    post:
      tags:
        - Authenticate
      summary: Resets the knowledge-based passwords
      description: ''
      operationId: KbaPasswordReset
      responses:
        '200':
          description: The login was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponseDto'
              example:
                userName: _userName1_
                userId: 1142c805484f4ffb9f1b92a66b47ef71
                token: >-
                  Z5UmVtb3RlU2V0dGluZ3MiLCJNb2RpZnlCYXNlU2V0dGluZ3MiLCJNb2RpZnlUZWNobmljYWxTZXR0aW5ncyIsIkV4ZWN1dGVWYWxpZGF0ZWRJdGVtcyIsIkV4ZWN1dGVOb25WYWxpZGF0ZWRJdGVtcyIsIkVkaXRTY2hlZHVsZSIsIlZpZXdGdW5jdGlvbnMiLCJWaWV3VXNlcnMiLCJWaWV3Um9sZXMiLCJNb2RpZnlQcmludFNldHRpbmdzIiwiQ3JlYXRlVXNlckRvY3VtZW50cyIsIyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzMTQyOGM4ZmQ0Yzk0MzljYmI3NTAzYzdiMGViOTU0MCIsImdpdmVuX25hbWUiOiJfX21scHJlcF9fIiwicm9sZSI6WyJDaGFuZ2VBY3RpdmVTeXN0ZW1Db25maWd1cmF0aW9uIiwiTW9kaWZ5Um9sZXMiLCJNb2RpZnlVc2VycyIsIk1vZGlmeUxhYm9yYXRvcnlTZXR0aW5ncyIsIk1vZGlmeVYmTVNldHRpbmdzIiwiTW9k
                inactiveLogout: 60
                logoutCountdown: 10
                expiresIn: 5
                passwordExpiresInDays: 0
                notifyPasswordExpiresSoon: false
        '400':
          description: Unable to authenticate
          content:
            application/json:
              schema:
                type: string
  /api/v1/authenticate/check-authentication:
    get:
      tags:
        - Authenticate
      summary: Check if a valid token exists
      description: Checks if a valid token exists
      operationId: CheckAuthentication
      responses:
        '200':
          description: A valid token exists
        '400':
          description: Request failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: No valid token exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/authenticate:
    post:
      tags:
        - Authenticate
      summary: Authenticates the user
      description: ''
      operationId: AuthenticateUser
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
      responses:
        '200':
          description: The login was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponseDto'
              example:
                userName: _userName1_
                userId: 1142c805484f4ffb9f1b92a66b47ef71
                token: >-
                  Z5UmVtb3RlU2V0dGluZ3MiLCJNb2RpZnlCYXNlU2V0dGluZ3MiLCJNb2RpZnlUZWNobmljYWxTZXR0aW5ncyIsIkV4ZWN1dGVWYWxpZGF0ZWRJdGVtcyIsIkV4ZWN1dGVOb25WYWxpZGF0ZWRJdGVtcyIsIkVkaXRTY2hlZHVsZSIsIlZpZXdGdW5jdGlvbnMiLCJWaWV3VXNlcnMiLCJWaWV3Um9sZXMiLCJNb2RpZnlQcmludFNldHRpbmdzIiwiQ3JlYXRlVXNlckRvY3VtZW50cyIsIyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzMTQyOGM4ZmQ0Yzk0MzljYmI3NTAzYzdiMGViOTU0MCIsImdpdmVuX25hbWUiOiJfX21scHJlcF9fIiwicm9sZSI6WyJDaGFuZ2VBY3RpdmVTeXN0ZW1Db25maWd1cmF0aW9uIiwiTW9kaWZ5Um9sZXMiLCJNb2RpZnlVc2VycyIsIk1vZGlmeUxhYm9yYXRvcnlTZXR0aW5ncyIsIk1vZGlmeVYmTVNldHRpbmdzIiwiTW9k
                inactiveLogout: 60
                logoutCountdown: 10
                expiresIn: 5
                passwordExpiresInDays: 0
                notifyPasswordExpiresSoon: false
        '400':
          description: Unable to authenticate
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
        - Authenticate
      summary: Logs out the current logged in user
      description: The user is logged out and token is cleared
      operationId: Logout
      responses:
        '200':
          description: The user was logged out successfully
  /api/v1/authenticate/renew-token:
    post:
      tags:
        - Authenticate
      summary: Renews the token for authentication
      description: ''
      operationId: AuthenticateRenewToken
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AuthenticatePostDto'
      responses:
        '200':
          description: The token was renewed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponseDto'
              example:
                userName: _userName1_
                userId: 1142c805484f4ffb9f1b92a66b47ef71
                token: >-
                  Z5UmVtb3RlU2V0dGluZ3MiLCJNb2RpZnlCYXNlU2V0dGluZ3MiLCJNb2RpZnlUZWNobmljYWxTZXR0aW5ncyIsIkV4ZWN1dGVWYWxpZGF0ZWRJdGVtcyIsIkV4ZWN1dGVOb25WYWxpZGF0ZWRJdGVtcyIsIkVkaXRTY2hlZHVsZSIsIlZpZXdGdW5jdGlvbnMiLCJWaWV3VXNlcnMiLCJWaWV3Um9sZXMiLCJNb2RpZnlQcmludFNldHRpbmdzIiwiQ3JlYXRlVXNlckRvY3VtZW50cyIsIyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzMTQyOGM4ZmQ0Yzk0MzljYmI3NTAzYzdiMGViOTU0MCIsImdpdmVuX25hbWUiOiJfX21scHJlcF9fIiwicm9sZSI6WyJDaGFuZ2VBY3RpdmVTeXN0ZW1Db25maWd1cmF0aW9uIiwiTW9kaWZ5Um9sZXMiLCJNb2RpZnlVc2VycyIsIk1vZGlmeUxhYm9yYXRvcnlTZXR0aW5ncyIsIk1vZGlmeVYmTVNldHRpbmdzIiwiTW9k
                inactiveLogout: 60
                logoutCountdown: 10
                expiresIn: 5
                passwordExpiresInDays: 0
                notifyPasswordExpiresSoon: false
        '400':
          description: Unable to authenticate
          content:
            application/json:
              schema:
                type: string
  /api/v1/authenticate/change-expired-password:
    post:
      tags:
        - Authenticate
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ChangeExpiredPasswordDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeExpiredPasswordDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ChangeExpiredPasswordDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ChangeExpiredPasswordDto'
      responses:
        '200':
          description: Success
  /api/v1/backups:
    get:
      tags:
        - Backups
      summary: Gets database backups
      description: ''
      operationId: GetBackups
      responses:
        '200':
          description: The database backup files
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BackupFileDto'
        '400':
          description: Unable to get database backup files (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/backups/export:
    get:
      tags:
        - Backups
      summary: Exports database backups
      description: ''
      operationId: ExportBackup
      parameters:
        - name: backups
          in: query
          description: The backup file names
          required: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: The database backup files content
          content:
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: >-
            Unable to export database backup files (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/backups/batch-delete:
    post:
      tags:
        - Backups
      summary: Deletes the backup files
      description: ''
      operationId: BatchDeleteBackups
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: string
          application/json:
            schema:
              type: array
              items:
                type: string
          text/json:
            schema:
              type: array
              items:
                type: string
          application/*+json:
            schema:
              type: array
              items:
                type: string
      responses:
        '204':
          description: The files were deleted
        '400':
          description: >-
            An error occurred while removing backup files (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/channel-results:
    get:
      tags:
        - Calibration
      summary: Receives previous channel calibration results
      description: ''
      operationId: GetChannelCalibrationResults
      responses:
        '200':
          description: Get Channel Calibration Results was successful
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CalibrationChannelResultGetDto'
              example:
                - id: 1
                  calibrationDate: '2020-02-20T20:32:05'
                  status: Ok
                  message: Calibration 1 completed successfully.
                  hasError: false
                  channelSkew:
                    mphSkewX: 0.09599304
                    mphSkewZ: -0.103622437
                    independentSkewX: 0.0764961243
                    independentSkewZ: -0.253875732
                  channelOffset:
                    mphOffsetX: 0.008743286
                    independentOffsetX: -0.919008255
                    yzAxisOffsets:
                      - index: 0
                        offsetY: 113.007935
                        offsetZ: 171.197922
                        offsetZValid: false
                      - index: 1
                        offsetY: 103.076126
                        offsetZ: 171.029861
                        offsetZValid: false
                  channelWarnings: null
                - id: 2
                  calibrationDate: '2020-02-21T19:17:12'
                  status: Failed
                  message: Calibration 2 failed to complete.
                  hasError: true
                  channelSkew: null
                  channelOffset: null
                  channelWarnings: null
        '400':
          description: >-
            Get Channel Calibration Results was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Calibration
      summary: Submits channel calibration result
      description: ''
      operationId: PostChannelResults
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CalibrationChannelResultDto'
            example:
              status: Ok
              message: Calibration completed successfully.
              hasError: false
              channelSkew: null
              channelOffset: null
              channelWarnings: null
          application/json:
            schema:
              $ref: '#/components/schemas/CalibrationChannelResultDto'
            example:
              status: Ok
              message: Calibration completed successfully.
              hasError: false
              channelSkew: null
              channelOffset: null
              channelWarnings: null
          text/json:
            schema:
              $ref: '#/components/schemas/CalibrationChannelResultDto'
            example:
              status: Ok
              message: Calibration completed successfully.
              hasError: false
              channelSkew: null
              channelOffset: null
              channelWarnings: null
          application/*+json:
            schema:
              $ref: '#/components/schemas/CalibrationChannelResultDto'
            example:
              status: Ok
              message: Calibration completed successfully.
              hasError: false
              channelSkew: null
              channelOffset: null
              channelWarnings: null
      responses:
        '200':
          description: Post Channel Calibration Results was successful
        '400':
          description: >-
            Post Channel Calibration Results was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/export:
    get:
      tags:
        - Calibration
      summary: Exports channel calibration results
      description: ''
      operationId: ExportCalibration
      responses:
        '200':
          description: Export was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportZipFile'
        '400':
          description: Export was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/images/{imageName}:
    get:
      tags:
        - Calibration
      summary: Retrieves a calibration image
      description: ''
      operationId: GetCalibrationImage
      parameters:
        - name: imageName
          in: path
          description: name of the requested image
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Get Image was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
        '400':
          description: Get Image was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/self-calibration:
    post:
      tags:
        - Calibration
      summary: Starts self calibration procedure
      description: ''
      operationId: GetSelfCalibration
      responses:
        '200':
          description: Start self calibration was successful
        '400':
          description: >-
            Start self calibration was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/channel-height-squeeze:
    post:
      tags:
        - Calibration
      summary: Starts channel height squeeze calibration procedure
      description: ''
      operationId: ChannelHeightSqueezeCalibration
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/HeightSqueezeCalibrationDto'
            example:
              tipLabwareId: 1
              tipLabwareSite: 2
          application/json:
            schema:
              $ref: '#/components/schemas/HeightSqueezeCalibrationDto'
            example:
              tipLabwareId: 1
              tipLabwareSite: 2
          text/json:
            schema:
              $ref: '#/components/schemas/HeightSqueezeCalibrationDto'
            example:
              tipLabwareId: 1
              tipLabwareSite: 2
          application/*+json:
            schema:
              $ref: '#/components/schemas/HeightSqueezeCalibrationDto'
            example:
              tipLabwareId: 1
              tipLabwareSite: 2
      responses:
        '200':
          description: Start Start Channel Height Squeeze Calibration was successful
        '400':
          description: >-
            Start Start Channel Height Squeeze Calibration was unsuccessful (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/hepa-filter-calibration:
    post:
      tags:
        - Calibration
      summary: Starts HEPA filter calibration procedure
      description: ''
      operationId: HepaFilterCalibration
      responses:
        '200':
          description: Start HEPA filter calibration was successful
        '400':
          description: >-
            Start HEPA filter calibration was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/abort:
    post:
      tags:
        - Calibration
      summary: Aborts calibration procedure
      description: ''
      operationId: AbortCalibration
      responses:
        '200':
          description: Abort was successful
        '400':
          description: Abort was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/close-view:
    post:
      tags:
        - Calibration
      summary: Sends the response to a view
      description: >-
        Each view may have different requested responses. These may include
        ok/cancel/yes/no response and any settings or choices.
      operationId: CloseCalibrationView
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          text/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/*+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
      responses:
        '200':
          description: Close view was successful
        '400':
          description: Close view was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/close-labware-view:
    post:
      tags:
        - Calibration
      summary: Sends labware response to a view
      description: ''
      operationId: CloseLabwareView
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ViewPostLabwareDto'
            example:
              viewId: 3d6cdce820474e9591dd819f8bad429c
              viewResult: ''
              labwareId: 7480e08dd4034164b0c37daad240b331
              labwarePosition: 2
          application/json:
            schema:
              $ref: '#/components/schemas/ViewPostLabwareDto'
            example:
              viewId: 3d6cdce820474e9591dd819f8bad429c
              viewResult: ''
              labwareId: 7480e08dd4034164b0c37daad240b331
              labwarePosition: 2
          text/json:
            schema:
              $ref: '#/components/schemas/ViewPostLabwareDto'
            example:
              viewId: 3d6cdce820474e9591dd819f8bad429c
              viewResult: ''
              labwareId: 7480e08dd4034164b0c37daad240b331
              labwarePosition: 2
          application/*+json:
            schema:
              $ref: '#/components/schemas/ViewPostLabwareDto'
            example:
              viewId: 3d6cdce820474e9591dd819f8bad429c
              viewResult: ''
              labwareId: 7480e08dd4034164b0c37daad240b331
              labwarePosition: 2
      responses:
        '200':
          description: Close view was successful
        '400':
          description: Close view was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/begin-load:
    post:
      tags:
        - Calibration
      summary: Begins the deck loading process
      description: ''
      operationId: BeginLoad
      responses:
        '200':
          description: Begin load was successful
        '400':
          description: Begin load was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/end-load:
    post:
      tags:
        - Calibration
      summary: Ends the deck loading process
      description: ''
      operationId: EndLoad
      responses:
        '200':
          description: End load was successful
        '400':
          description: End load was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/begin-cleanup:
    post:
      tags:
        - Calibration
      summary: Begins the deck cleanup process
      description: ''
      operationId: BeginCleanup
      responses:
        '200':
          description: Begin cleanup was successful
        '400':
          description: Begin cleanup was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/calibration/end-cleanup:
    post:
      tags:
        - Calibration
      summary: Ends the deck cleanup process
      description: ''
      operationId: EndCleanup
      responses:
        '200':
          description: End cleanup was successful
        '400':
          description: End cleanup was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/{rectify}:
    get:
      tags:
        - Camera
      summary: Captures a frame from the camera
      description: >-
        Retrieves the frame from the camera with an option to rectify
        (undistort) if desired.
      operationId: GetFrameCamera
      parameters:
        - name: rectify
          in: path
          description: Option to undistort the image
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: The PNG image file that was grabbed from the camera
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/calibration-pattern:
    get:
      tags:
        - Camera
      summary: Captures a frame from the camera with the calibration overlaid on top.
      description: >-
        Retrieves the frame from the camera with the calibration overlaid on
        top. This can be helpful to diagnose any problems with the camera or
        deck calibration.
      operationId: GetCalibrationPatternImage
      responses:
        '200':
          description: The PNG image file that was grabbed from the camera
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/parameters:
    get:
      tags:
        - Camera
      summary: Captures the current camera parameters.
      description: ''
      operationId: GetCameraParameters
      responses:
        '200':
          description: The set of camera parameters for the current connected camera
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CameraParameterDto'
              example:
                - displayName: CameraParameterName1
                  value: BaslerDartBoundedParameterFloatValue1
                - displayName: CameraParameterName2
                  value: BaslerDartBoundedParameterFloatValue2
  /api/v1/camera/position/{positionId}/{padding}/{zHeight}:
    get:
      tags:
        - Camera
      summary: Captures a cropped frame from the camera of a specified deck position
      description: >-
        Grabs a cropped frame from the camera of a specified deck position. The
        position id must be provided. An optional padding (in mm) and height
        value (in mm) can also be provided.
      operationId: GetPositionImage
      parameters:
        - name: positionId
          in: path
          description: The position which should be retrieved
          required: true
          schema:
            type: integer
            format: int32
        - name: padding
          in: path
          description: >-
            The ammount of desired padding in the view around the position (in
            mm)
          schema:
            type: number
            format: double
            default: 0
        - name: zHeight
          in: path
          description: >-
            The Z-axis height (from the bottom of the deck position) at which to
            sample the position image (in mm)
          schema:
            type: number
            format: double
            default: 0
      responses:
        '200':
          description: >-
            The PNG image file that was grabbed from the camera of the specified
            deck position at height (zHeight: mm) and with padding (mm)
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera or invalid selections
            were provided (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/position/tip-rack/{positionId}/{zHeight}/{color}:
    get:
      tags:
        - Camera
      summary: >-
        Captures a cropped frame from the camera of a specified deck position
        and draws a tip rack pattern on it.
      description: "Grabs a cropped frame from the camera of a specified deck position and draws a tip rack pattern on it.\r\nThe position id, height of the rack (typically 61mm, 63mm, or 65mm), and desired color (0 - 255) must be provided.\r\nThis call is useful for debugging purposes, to see how well the calibrations line up, or how well tip detection works."
      operationId: GetTipRackPositionImage
      parameters:
        - name: positionId
          in: path
          description: The position which should be retrieved
          required: true
          schema:
            type: integer
            format: int32
        - name: zHeight
          in: path
          description: The height of the tip rack (typically 61mm, 63mm, or 65mm)
          required: true
          schema:
            type: number
            format: double
        - name: color
          in: path
          description: The color of the tip rack drawn on the image
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: >-
            The PNG image file that was grabbed from the camera of the specified
            deck position with a tip rack pattern drawn at specified height
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera or invalid selections
            were provided (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/get-frame:
    get:
      tags:
        - Camera
      summary: Captures a raw frame from the camera
      description: Retrieves the raw frame from the camera.
      operationId: GetFrameRaw
      responses:
        '200':
          description: The PNG image file that was grabbed from the camera
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/get-weighted-frame:
    get:
      tags:
        - Camera
      summary: Captures a weighted frame from the camera
      description: Retrieves the weighted frame from the camera.
      operationId: GetWeightedFrame
      responses:
        '200':
          description: The PNG image file that was grabbed from the camera
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            The image couldn't be captured from the camera (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/camera/vision-system-status:
    get:
      tags:
        - Camera
      summary: Get the vision system status
      description: ''
      operationId: GetVisionSystemStatus
      responses:
        '200':
          description: The vision system status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisionSystemGetDto'
  /api/v1/camera/cameras:
    get:
      tags:
        - Camera
      summary: Get the cameras
      description: ''
      operationId: GetAllCameras
      responses:
        '200':
          description: The list of cameras
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CameraSettingsDto'
        '404':
          description: Unable to query the cameras
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/active:
    get:
      tags:
        - Camera
      summary: Get the active camera
      description: ''
      operationId: GetActiveCamera
      responses:
        '200':
          description: The active camera
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CameraSettingsDto'
        '404':
          description: Unable to query the cameras
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/active/{id}:
    put:
      tags:
        - Camera
      summary: Change the active camera
      description: ''
      operationId: ChangeActiveCamera
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The active camera was set successfully
        '400':
          description: >-
            An error occurred while setting the active camera (see error message
            for details)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/start-camera-feed:
    post:
      tags:
        - Camera
      summary: Starts the variation camera feed
      operationId: StartCameraVariationFeed
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: integer
              format: int32
          application/json:
            schema:
              type: integer
              format: int32
          text/json:
            schema:
              type: integer
              format: int32
          application/*+json:
            schema:
              type: integer
              format: int32
      responses:
        '200':
          description: The camera variation feed was started
        '400':
          description: Unable to start camera feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/stop-camera-feed:
    post:
      tags:
        - Camera
      summary: Stops the variation camera feed
      operationId: StopCameraVariationFeed
      responses:
        '200':
          description: The camera variation feed was started
        '400':
          description: Unable to start camera feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/frame-in-feed:
    post:
      tags:
        - Camera
      summary: Grabs a single frame and sends it to the camera live feed
      operationId: PostSingleFrameInFeed
      responses:
        '200':
          description: The the feed request was processed
        '400':
          description: Unable to complete the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/adjust-upper-crop:
    post:
      tags:
        - Camera
      summary: Adjust Upper crop values
      operationId: AdjustUpperCrop
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          application/json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          text/json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
      responses:
        '200':
          description: Crop was adjusted correctly
        '400':
          description: Unable to complete the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/adjust-lower-crop:
    post:
      tags:
        - Camera
      summary: Adjust Lower crop values
      operationId: AdjustLowerCrop
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          application/json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          text/json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CameraCropDelta'
      responses:
        '200':
          description: Crop was adjusted correctly
        '400':
          description: Unable to complete the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/camera/reset-crop/{focusBlockType}:
    post:
      tags:
        - Camera
      summary: Reset crop values
      operationId: ResetCrops
      parameters:
        - name: focusBlockType
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/CameraFocusBlockType'
      responses:
        '200':
          description: Reset Crops
        '400':
          description: Unable to complete the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/configuration/cors:
    post:
      tags:
        - Configuration
      summary: Adds a CORS origin
      description: ''
      operationId: AddCorsOrigin
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CorsOriginPostDto'
            example:
              url: http://localhost:4300
          application/json:
            schema:
              $ref: '#/components/schemas/CorsOriginPostDto'
            example:
              url: http://localhost:4300
          text/json:
            schema:
              $ref: '#/components/schemas/CorsOriginPostDto'
            example:
              url: http://localhost:4300
          application/*+json:
            schema:
              $ref: '#/components/schemas/CorsOriginPostDto'
            example:
              url: http://localhost:4300
      responses:
        '200':
          description: The request was successful
        '400':
          description: The request was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
    get:
      tags:
        - Configuration
      summary: Get all CORS origins
      description: ''
      operationId: GetAllCorsOrigins
      responses:
        '200':
          description: The list of CORS Origins
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CorsOriginDto'
        '404':
          description: Unable to query the list of origins (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/configuration/cors/{originId}:
    delete:
      tags:
        - Configuration
      summary: Deletes a CORS origin
      description: ''
      operationId: DeleteCorsOrigin
      parameters:
        - name: originId
          in: path
          description: The CORS origin id to delete
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '204':
          description: Success
        '400':
          description: >-
            An error occurred while attempting to delete the CORS origin (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
    get:
      tags:
        - Configuration
      summary: Get a CORS origin
      description: ''
      operationId: GetCorsOrigin
      parameters:
        - name: originId
          in: path
          description: The CORS origin id to get
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The CORS origin
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CorsOriginDto'
        '404':
          description: Unable to query the list of origins (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/credentials:
    get:
      tags:
        - Credentials
      summary: Retrieves the list of credentials
      description: ''
      operationId: GetCredentials
      parameters:
        - name: location
          in: query
          description: >-
            Optional location. Send in the location to retrieve only credentials
            with that location.
          schema:
            type: string
      responses:
        '200':
          description: The list of credentials
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CredentialDto'
        '400':
          description: >-
            An error occurred while retrieving the credentials (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Credentials
      summary: Creates a new credential
      description: ''
      operationId: AddCredential
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CredentialDto'
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialDto'
          text/json:
            schema:
              $ref: '#/components/schemas/CredentialDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CredentialDto'
      responses:
        '201':
          description: The created credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialDto'
        '400':
          description: >-
            An error occurred while creating the credential (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - Credentials
      summary: Update a credential
      description: ''
      operationId: PutCredential
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialDto'
      responses:
        '200':
          description: The credential was updated successfully
        '400':
          description: >-
            An error occurred while attempting to update the credential (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/credentials/{id}:
    get:
      tags:
        - Credentials
      summary: Retrieves the credential
      description: ''
      operationId: GetCredential
      parameters:
        - name: id
          in: path
          description: The id for the credential
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialDto'
        '400':
          description: >-
            An error occurred while retrieving the credential (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
        - Credentials
      summary: Delete the credential
      description: ''
      operationId: DeleteCredential
      parameters:
        - name: id
          in: path
          description: The id for the credential
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '204':
          description: The credential was removed successfully
        '400':
          description: >-
            An error occurred while deleting the credential (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/deck/calibrate:
    put:
      tags:
        - Deck
      summary: Performs a calibration of the deck relative to the camera.
      description: "In order for the calibration to succeed, the camera functionality must be enabled, \r\nand the deck must be cleared from all labware or objets that can interfere with the calibration process."
      operationId: CalibrateDeck
      responses:
        '200':
          description: The calibration was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalibrationCameraResultDto'
        '400':
          description: The calibration was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
    get:
      tags:
        - Deck
      summary: Retrieves the history of previously performed calibrations
      description: >-
        Retrieves the history of previously performed calibrations including
        dates and errors.
      operationId: GetCalibrations
      responses:
        '200':
          description: The calibration was successful
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CalibrationCameraResultDto'
  /api/v1/deck/legacy-scan/{numMatches}:
    get:
      tags:
        - Deck
      summary: >-
        (Depricated) Performs a scan using the camera to discover labware
        present on the deck
      description: >-
        The deck scan requires that the camera be enabled and functional. The
        deck should also have been recently calibrated (using PUT /Calibrate) to
        ensure optimal scan results. The scan returns the list of labware
        detected (sorted by confidence) at each position. The numMatches
        parameter specifies how many labware matches are returned per position.
      operationId: LegacyScan
      parameters:
        - name: numMatches
          in: path
          description: Number of desired labware matches per position
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The scan completed successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeckScanMatchResultDto'
        '400':
          description: >-
            The scan was unsuccessful (see error message for details). Usually,
            because the camera is unavailable, not functional, or deck has not
            been calibrated.
          content:
            application/json:
              schema:
                type: string
  /api/v1/deck/scan/{numMatches}:
    get:
      tags:
        - Deck
      summary: Performs a scan using the camera to discover labware present on the deck
      description: >-
        The deck scan requires that the camera be enabled and functional. The
        deck should also have been recently calibrated (using PUT /Calibrate) to
        ensure optimal scan results. The scan returns the list of labware
        detected (sorted by confidence) at each position. The numMatches
        parameter specifies how many labware matches are returned per position.
      operationId: DeckScan
      parameters:
        - name: numMatches
          in: path
          description: Number of desired labware matches per position
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The scan completed successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeckScanMatchResultDto'
        '400':
          description: >-
            The scan was unsuccessful (see error message for details). Usually,
            because the camera is unavailable, not functional, or deck has not
            been calibrated.
          content:
            application/json:
              schema:
                type: string
  /api/v1/deck/{protocolId}:
    put:
      tags:
        - Deck
      summary: Update the deck layout and steps of a protocol by the given protocolId
      description: ''
      operationId: UpdateDeckLayout
      parameters:
        - name: protocolId
          in: path
          description: The id of the protocol to update
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeckLayoutPostPutDto'
            example:
              id: 1
              positions:
                - position: 1
                  labwarePositions:
                    - row: 1
                      column: 1
                      id: 1
                      positionName: Some Labware Position Name
                      labwareGroup:
                        labwareId: 42
                        id: 1
                        groupName: Name for the Labware Group
                        reuseTipsBetweenSteps: false
                        liquidName: Name of the Liquid
                        liquidType: Water
                        liquidVolumeOptions: CalculateForMe
                      liquidVolume: 42
                  id: 1
                  positionName: Name of the Deck Position
                  labwareGroup:
                    labwareId: 42
                    id: 1
                    groupName: Name for the Deck Position Labware Group
                    reuseTipsBetweenSteps: false
                    liquidName: Name of the Liquid
                    liquidType: Water
                    liquidVolumeOptions: CalculateForMe
                  liquidVolume: 4200
                - position: 2
                  labwarePositions: []
                  id: 2
                  positionName: Another Deck Position Name
                  labwareGroup: null
                  liquidVolume: 0
      responses:
        '200':
          description: The deck layout of the given protocol was updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeckLayoutGetDto'
        '400':
          description: Invalid body data provided (see error message for more details)
          content:
            application/json:
              schema:
                type: string
        '404':
          description: >-
            Either no protocol or deck with provided protocolId and/or deck id
            was found (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/deck/{deckLayoutId}:
    get:
      tags:
        - Deck
      summary: Retrieves the deck layout with the provided deckLayoutId
      description: ''
      operationId: GetDeckLayout
      parameters:
        - name: deckLayoutId
          in: path
          description: The id of the deck
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The deck layout with the given deckLayoutId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeckLayoutGetDto'
        '404':
          description: >-
            The deck with provided deckLayoutId was not found (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics:
    get:
      tags:
        - Diagnostics
      summary: Retrieves the diagnostic zip file
      description: The most recent 2,000 (maximum) Instinct V trace records are returned.
      operationId: GetDiagnostics
      responses:
        '200':
          description: Exported diagnostic file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Get diagnostics was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/protocols/{protocolId}:
    get:
      tags:
        - Diagnostics
      summary: Retrieves the diagnostic zip file
      description: ''
      operationId: GetProtocolDiagnostics
      parameters:
        - name: protocolId
          in: path
          description: the protocol id to retrieve
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Exported diagnostic file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Get diagnostics was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/protocol/demo:
    put:
      tags:
        - Diagnostics
      summary: Starts the demo protocol
      description: ''
      operationId: StartDemo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DemoProtocolDto'
            example:
              protocolName: DemoProtocol
              systemName: HHS_System
              simulate: true
      responses:
        '200':
          description: Started demo protocol
        '400':
          description: Start demo protocol was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/transport:
    put:
      tags:
        - Diagnostics
      summary: Starts the transport test protocol
      description: ''
      operationId: StartTransportTest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransportDiagnosticPutDto'
            example:
              plateLabwareId: 1
      responses:
        '200':
          description: Started transport test
        '400':
          description: Start demo protocol was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/hhs:
    put:
      tags:
        - Diagnostics
      summary: Starts the HHS test protocol
      description: ''
      operationId: StartHhsTest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HhsDiagnosticDto'
            example:
              heat: true
              shake: true
              heatValue: 75
              shakeValue: 200
              duration: 1
              plateLabwareId: 1
      responses:
        '200':
          description: Started HHS test
        '400':
          description: Start HHS test was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/tip-pickup:
    put:
      tags:
        - Diagnostics
      summary: Starts the tip pickup test protocol
      description: ''
      operationId: StartTipPickupTest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TipPickupDiagnosticPutDto'
            example:
              channelSelection: OneChannel
              tipLabwareId: 1
              deckPosition: 2
              ejectToWaste: true
      responses:
        '200':
          description: Started tip pickup test
        '400':
          description: >-
            Start tip pickup test was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/drip:
    put:
      tags:
        - Diagnostics
      summary: Starts drip diagnostics protocol
      description: ''
      operationId: StartDripTest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DripDiagnosticPutDto'
            example:
              channelSelection: OneChannel
              tipLabwareId: 1
              troughLabwareId: 2
              tipPosition: 9
              troughPosition: 3
      responses:
        '200':
          description: Started drip test
        '400':
          description: Start drip test was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/pressure:
    put:
      tags:
        - Diagnostics
      summary: Starts the pressure test protocol
      description: ''
      operationId: StartPressureTest
      responses:
        '200':
          description: Started pressure test
        '400':
          description: Start pressure test was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/camera:
    get:
      tags:
        - Diagnostics
      summary: Retrieves a camera snapshot
      description: ''
      operationId: GetCameraSnapshot
      responses:
        '200':
          description: Retrieved camera snapshot file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Retrieve camera snapshot file was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/network:
    get:
      tags:
        - Diagnostics
      summary: Retrieves a network diagnostic file
      description: ''
      operationId: GetNetworkDiagnostics
      responses:
        '200':
          description: Retrieved network diagnostic file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Retrieve network diagnostic file was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/motor-diagnostics:
    put:
      tags:
        - Diagnostics
      summary: Starts the motor cycle protocol
      description: ''
      operationId: CycleMotor
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MotorDiagnosticDto'
            example:
              displayName: Y-Axis Rear, Rear Channel
              motor: 1
              channel: 2
              mphOnly: true
              runtimeInSeconds: 60
      responses:
        '200':
          description: Started motor cycle diagnostic
        '400':
          description: >-
            Start motor cycle diagnostic was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/instrument/cancel-motor-diagnostics:
    put:
      tags:
        - Diagnostics
      summary: Cancel the motor cycle protocol
      description: ''
      operationId: CancelCycleMotor
      responses:
        '200':
          description: Canceled motor cycle diagnostic
        '400':
          description: >-
            Cancel motor cycle diagnostic was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/close-view:
    post:
      tags:
        - Diagnostics
      summary: Sends the response to a labware selection view
      description: ''
      operationId: PostLabware
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          text/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/*+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
      responses:
        '200':
          description: Sent labware selection response
        '400':
          description: >-
            Send of labware selection response was unsuccessful (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/diagnostics/submit-client-log-entry:
    put:
      tags:
        - Diagnostics
      summary: Submits a client log entry
      description: ''
      operationId: SubmitClientLog
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientLogEntryDto'
            example:
              logEntry: Unable to complete action.
              logType: ERROR
              logTime: Tue Sep 21 2021 09:52:53 GMT-0700 (Pacific Daylight Time)
      responses:
        '200':
          description: Submited a client log entry
        '400':
          description: >-
            Submitting client log entry was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/enclosure:
    post:
      tags:
        - Enclosure
      summary: Sets the enclosure lighting
      description: >-
        Custom lighting mode (POST /set-custom-lighting) must be enabled to gain
        control of the lighting system. Automatic lighting (POST
        /set-automatic-lighting) must be enabled when finished.
      operationId: SetEnclosureLighting
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/EnclosureLightingDto'
            example:
              red: 100
              green: 150
              blue: 50
              white: 0
          application/json:
            schema:
              $ref: '#/components/schemas/EnclosureLightingDto'
            example:
              red: 100
              green: 150
              blue: 50
              white: 0
          text/json:
            schema:
              $ref: '#/components/schemas/EnclosureLightingDto'
            example:
              red: 100
              green: 150
              blue: 50
              white: 0
          application/*+json:
            schema:
              $ref: '#/components/schemas/EnclosureLightingDto'
            example:
              red: 100
              green: 150
              blue: 50
              white: 0
      responses:
        '200':
          description: The light values were set
        '400':
          description: The lights could not be set (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/enclosure/set-custom-lighting:
    post:
      tags:
        - Enclosure
      summary: Sets the enclosure lighting in custom mode
      description: >-
        This needs to be called before setting the enclosure lighting values
        (POST). Once values are set, automatic lighting (POST
        /set-automatic-lighting) must be enabled
      operationId: SetCustomLighting
      responses:
        '200':
          description: The enclosure lighting system was set in custom mode
        '400':
          description: >-
            The enclosure lighting system custom mode could not be set (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/enclosure/set-automatic-lighting:
    post:
      tags:
        - Enclosure
      summary: Sets the enclosure lighting in automatic mode
      description: >-
        This needs to be called after setting the enclosure lighting values
        (POST)
      operationId: SetAutomaticLighting
      responses:
        '200':
          description: The enclosure lighting system was set in automatic mode
        '400':
          description: >-
            The enclosure lighting system automatic mode could not be set (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/enclosure/dismiss-lighting-error:
    post:
      tags:
        - Enclosure
      summary: Resets the enclosure lighting to the default white state
      description: ''
      operationId: DismissLightingError
      responses:
        '200':
          description: The lights were reset back to the white state
        '400':
          description: >-
            An error occurred while resetting the lights (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/enclosure/monitor-fan-state:
    put:
      tags:
        - Enclosure
      summary: Subscribes to fan events
      description: ''
      operationId: MonitorFanState
      responses:
        '200':
          description: Successfully subscribed to fan events
        '400':
          description: >-
            An error occurred while subscribing to fan events (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/environment:
    get:
      tags:
        - Environment
      summary: Gets the applications current environment
      description: ''
      operationId: GetFrameEnvironment
      responses:
        '200':
          description: The environment information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentGetDto'
              example:
                isStaging: true
                visionSystemEnabled: true
                timingDiagnosticsEnabled: true
                dbCheckStatus: Ok
                driveCheckStatus: Ok
        '500':
          description: Error retrieving environment settings
          content:
            application/json:
              schema:
                type: string
  /api/v1/errors:
    get:
      tags:
        - Errors
      summary: Gets the errors from the instinct system
      description: ''
      operationId: GetErrors
      parameters:
        - name: offset
          in: query
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The instinct errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstinctErrors'
        '400':
          description: >-
            The instinct errors could not be retrieved (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/errors/{errorId}:
    get:
      tags:
        - Errors
      summary: Gets a specific Instinct error by id
      description: ''
      operationId: GetError
      parameters:
        - name: errorId
          in: path
          description: The Instinct id for the error
          schema:
            type: string
      responses:
        '200':
          description: The instinct error details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstinctErrorDetails'
        '400':
          description: >-
            The instinct error details could not be retrieved (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/errors/runtime:
    put:
      tags:
        - Errors
      summary: Handles an error based on the selected response
      description: >-
        A runtime error is sent over the error socket.  Handling of the error is
        done via this PUT
      operationId: HandleRuntimeError
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RuntimeGroupError'
      responses:
        '200':
          description: The instinct error was handled properly
        '400':
          description: Invalid error handling request
          content:
            application/json:
              schema:
                type: string
  /api/v1/errors/check-for-pending-errors:
    get:
      tags:
        - Errors
      summary: Checks the Instinct system for any unhandled pending errors
      description: ''
      operationId: CheckForPendingErrors
      responses:
        '200':
          description: The pending errors
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ErrorMessage'
        '400':
          description: >-
            The pending errors could not be retrieved (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/errors/clear-errors:
    put:
      tags:
        - Errors
      summary: Clears all the pending errors
      description: ''
      operationId: ClearErrors
      responses:
        '200':
          description: The number of errors cleared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorsHandledCount'
  /api/v1/hepa-uv/start-hepa-fan:
    put:
      tags:
        - HepaUv
      summary: Start the HEPA fan on the HEPA/UV device
      description: Turns on the HEPA fan
      operationId: StartHepaFan
      responses:
        '200':
          description: HEPA fan started
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Could not start HEPA fan
          content:
            application/json:
              schema:
                type: string
  /api/v1/hepa-uv/stop-hepa-fan:
    put:
      tags:
        - HepaUv
      summary: Stop the HEPA fan on the HEPA/UV device
      description: Turns off the HEPA fan
      operationId: StopHepaFan
      responses:
        '200':
          description: HEPA fan stopped
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Could not stop HEPA fan
          content:
            application/json:
              schema:
                type: string
  /api/v1/hepa-uv/is-hepa-fan-running:
    get:
      tags:
        - HepaUv
      summary: The HEPA fan state
      description: Checks if the HEPA fan is running
      operationId: IsHepaFanRunning
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Could not get HEPA fan state
          content:
            application/json:
              schema:
                type: string
  /api/v1/hepa-uv/pre-filter-usage:
    get:
      tags:
        - HepaUv
      summary: HEPA pre-filter usage
      description: Gets the current usage of the HEPA pre-filter
      operationId: GetPreFilterUsage
      responses:
        '200':
          description: The current usage
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '400':
          description: Could not get HEPA pre-filter usage
          content:
            application/json:
              schema:
                type: string
  /api/v1/hepa-uv/hepa-filter-pressure:
    get:
      tags:
        - HepaUv
      summary: HEPA filter pressure
      description: Gets the current pressure of the HEPA filter
      operationId: GetHepaFilterPressure
      responses:
        '200':
          description: The current pressure
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '400':
          description: Could not get HEPA filter pressure
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/all-available:
    get:
      tags:
        - Instruments
      summary: Get all available instruments
      description: Retrieves the available instruments on the network
      operationId: GetAllAvailable
      responses:
        '200':
          description: The list of instruments found on the network
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscoverItem'
        '404':
          description: No instruments where found
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/initialize:
    post:
      tags:
        - Instruments
      summary: Initialize the current instrument
      description: ''
      operationId: InitializeInstrument
      responses:
        '200':
          description: The instrument initialized successfully
        '400':
          description: Unable to initialize the instrument (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/global-run-state:
    get:
      tags:
        - Instruments
      summary: Get the current global run state
      description: ''
      operationId: GetGlobalRunState
      responses:
        '200':
          description: The current global run state
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments:
    get:
      tags:
        - Instruments
      summary: Get the current connected instrument
      description: ''
      operationId: GetInstrument
      responses:
        '200':
          description: The current instrument configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstrumentConfigurationGetDto'
    put:
      tags:
        - Instruments
      summary: Connect to the instrument with the provided serial number
      description: ''
      operationId: InitialConnect
      parameters:
        - name: serialNumber
          in: query
          description: Instrument's serial number
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Connection was successful
        '400':
          description: >-
            Unable to connect to the instrument with the provided serial number
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/get-active-system:
    get:
      tags:
        - Instruments
      summary: Get the current active system
      description: ''
      operationId: GetActiveSystem
      responses:
        '200':
          description: The current active system
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveSystemGetDto'
        '400':
          description: >-
            Unable to get the current active system (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/connection-status:
    get:
      tags:
        - Instruments
      summary: Get the current connection status
      description: ''
      operationId: GetConnectionStatus
      responses:
        '200':
          description: The current connection status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionStatus'
        '400':
          description: >-
            Unable to get the current connection status (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/connection-info:
    get:
      tags:
        - Instruments
      summary: Get the current connection information
      description: ''
      operationId: GetConnectionInfo
      responses:
        '200':
          description: The current connection information
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          description: >-
            Unable to get the current connection information (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/connect-to-instrument:
    put:
      tags:
        - Instruments
      summary: Connect to the current instrument
      description: ''
      operationId: ConnectToInstrument
      responses:
        '200':
          description: Connection was successful
        '400':
          description: >-
            Unable to connect to the current instrument(see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/mock:
    put:
      tags:
        - Instruments
      summary: Set the default mock instrument
      description: ''
      operationId: SetDefault
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MockInstrumentDto'
      responses:
        '200':
          description: Mock instrument was successfully set
        '400':
          description: Unable to set the mock instrument (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/instruments/serial-number:
    get:
      tags:
        - Instruments
      summary: Get the serial number of the current connected instrument
      description: ''
      operationId: GetSerialNumber
      responses:
        '200':
          description: The serial number for the current instrument
          content:
            application/json:
              schema:
                type: string
        '400':
          description: >-
            Unable to get the serial number of the current instrument (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware:
    get:
      tags:
        - Labware
      summary: Retrieves the list of existing labware
      description: ''
      operationId: GetLabware
      responses:
        '200':
          description: List of existing labware
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LabwareSummaryDto'
        '400':
          description: >-
            An error occurred while retrieving the labware (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/{id}:
    get:
      tags:
        - Labware
      summary: Retrieves the labware by id
      description: ''
      operationId: GetLabwareById
      parameters:
        - name: id
          in: path
          description: The id of the labware to retrieve
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The labware
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabwareDto'
        '400':
          description: >-
            An error occurred while retrieving the labware (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
        - Labware
      summary: Deletes the labware from the database
      description: ''
      operationId: DeleteLabware
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '204':
          description: Success
        '400':
          description: >-
            An error occurred while attempting to delete the labware (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/properties/classifications:
    get:
      tags:
        - Labware
      responses:
        '200':
          description: Success
  /api/v1/labware/by-name/{name}:
    get:
      tags:
        - Labware
      summary: Retrieves the labware by name
      description: ''
      operationId: GetLabwareByName
      parameters:
        - name: name
          in: path
          description: The name of the labware to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The labware
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabwareDto'
        '400':
          description: >-
            An error occurred while retrieving the labware (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/export/{labwareId}:
    get:
      tags:
        - Labware
      summary: Export the labware with the given id
      description: >-
        Packages up the labware data into a zip file that can be imported into
        other systems
      operationId: ExportLabware
      parameters:
        - name: labwareId
          in: path
          description: The id of the labware to export
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The labware zip file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the labware (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/export:
    get:
      tags:
        - Labware
      summary: Export the entire labware catalog
      description: >-
        Packages up all the labware data into a catalog zip file that can be
        imported into other systems
      operationId: ExportAll
      responses:
        '200':
          description: The labware zip file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the labware (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/find-existing-imports:
    post:
      tags:
        - Labware
      summary: Checks to see if the system contains the labware to be imported
      description: >-
        This is a way to check a labware import file without actually importing
        a file.
      operationId: FindExistingLabwareImports
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
      responses:
        '200':
          description: The validation results of checking the labware import file
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExistingLabwareImport'
        '400':
          description: >-
            An error occurred while checking the labware import file (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/favorite:
    post:
      tags:
        - Labware
      summary: Sets or unsets the favorite status of a given labware
      description: ''
      operationId: SetLabwareFavorite
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/LabwareFavoritePostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/LabwareFavoritePostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/LabwareFavoritePostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LabwareFavoritePostDto'
      responses:
        '200':
          description: Success
        '400':
          description: >-
            An error occurred while setting the favorite flag (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/import/{ignoreLabwareDefinitionFiles}:
    put:
      tags:
        - Labware
      summary: Imports the labware file
      description: ''
      operationId: ImportLabware
      parameters:
        - name: ignoreLabwareDefinitionFiles
          in: path
          description: >-
            Option on whether or not to ignore the underlying labware definition
            files
          schema:
            type: boolean
            default: false
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
                FilesToOverwrite:
                  type: string
                  description: Specify which files should be overwritten
                ZipFileProtocolEntry:
                  type: string
                  description: The zip file for the protocol
                NewProtocolName:
                  type: string
                  description: >-
                    The new name for the protocol if a protocol with the same
                    name exists
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
              FilesToOverwrite:
                style: form
              ZipFileProtocolEntry:
                style: form
              NewProtocolName:
                style: form
      responses:
        '200':
          description: The validation results of importing the file
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileImportResult'
        '400':
          description: >-
            An error occurred while attempting to import the labware file (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/restore-catalog:
    post:
      tags:
        - Labware
      summary: Restores the entire catalog to the initial default labware catalog
      description: >-
        Performing this action will remove all labware and restore the catalog
        back to its initial state
      operationId: RestoreCatalog
      responses:
        '200':
          description: The validation results of importing the file
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileImportResult'
        '400':
          description: >-
            An error occurred while attempting to restore the labware catalog
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/images/{labwareId}:
    get:
      tags:
        - Labware
      summary: Retrieve the thumbnail preview images for the given labware
      description: ''
      operationId: GetLabwareImage
      parameters:
        - name: labwareId
          in: path
          description: The id of the labware
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The thumbnail preview image of the labware
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while attempting to retrieve the labware image
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware/properties-container/{labwareDocumentName}:
    get:
      tags:
        - Labware
      summary: Retrieve container information for the given labware.
      description: ''
      operationId: GetContainerInfo
      parameters:
        - name: labwareDocumentName
          in: path
          description: The labware document name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The labware container basic information,
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabwareContainerDto'
        '400':
          description: >-
            An error occurred while attempting to retrieve the labware container
            data (see error message for details).
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-categories:
    get:
      tags:
        - LabwareCategories
      summary: Retrieves the list of existing labware categories
      description: ''
      operationId: GetLabwareCategories
      responses:
        '200':
          description: List of existing labware categories
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LabwareCategoryDto'
        '400':
          description: >-
            An error occurred while retrieving the labware categories (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-categories/classifications/{classificationId}:
    get:
      tags:
        - LabwareCategories
      summary: >-
        Retrieves the list of labware categories related to the provided
        classification
      description: "Retrieves all sub-categories which are linked to the classification. The currently supported classification types\r\n(not case sensitive) are: Empty, Unknown, Plate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube,\r\nContainer, Magnet, VirtualTubeRack, Assembly, Lid, and LidCarrier."
      operationId: GetLabwareCategoriesByClassification
      parameters:
        - name: classificationId
          in: path
          description: "The labware classification type, acceptable values are \r\nEmpty, Unknown, Plate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube,\r\nContainer, Magnet, VirtualTubeRack, Assembly, Lid, and LidCarrier."
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of labware categories of the given classification
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LabwareCategoryDto'
        '400':
          description: >-
            An error occurred while retrieving the labware categories (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-categories/groups/{grouping}:
    get:
      tags:
        - LabwareCategories
      summary: >-
        Retrieves the list of labware categories related to the provided
        grouping
      description: >-
        Retrieves all sub-categories which are linked to the grouping. The set
        of supported groups can be acquired through GET /Group
      operationId: GetLabwareCategoriesByGrouping
      parameters:
        - name: grouping
          in: path
          description: >-
            The labware grouping type. The set of supported groups can be
            acquired through GET /Groups
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of labware categories of the given grouping
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LabwareCategoryDto'
        '400':
          description: >-
            An error occurred while retrieving the labware categories (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-categories/groups:
    get:
      tags:
        - LabwareCategories
      summary: Retrieves the list of labware categories groups
      description: Retrieves all labware categories groups
      operationId: GetLabwareCategoryGroupings
      responses:
        '200':
          description: List of labware category groups
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          description: >-
            An error occurred while retrieving the labware category groups (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-signature/update:
    put:
      tags:
        - LabwareSignature
      summary: >-
        Updates the labware signature for the given labware at the given deck
        position
      description: "Labware recognition is done by computing signatures of each labware at each position. If the recognition\r\naccuracy is poor for a particular labware in a specific position, the signature can be updated. This is done by placing the labware at\r\nthe position and calling this method. The camera will take a image and update the signature. <b>Warning: this operation cannot be undone\r\nor reverted other then restoring the entire catalog. Make sure the correct labware is placed in the correct position before calling this.</b>"
      operationId: UpdateLabwareSignature
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLabwareSignatureDto'
      responses:
        '200':
          description: Success
        '400':
          description: >-
            An error occurred while updating the labware signature (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-signature/export:
    get:
      tags:
        - LabwareSignature
      summary: Export the set of labware signatures from the system
      description: ''
      operationId: ExportAllLabwareSignatures
      responses:
        '200':
          description: Exported zip file containing all the labware signatures
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the labware signatures (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-signature/import:
    put:
      tags:
        - LabwareSignature
      summary: Import the set of labware signatures into the system
      description: ''
      operationId: ImportAllLabwareSignatures
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
      responses:
        '200':
          description: The result of the labware signature import
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileImportResult'
        '400':
          description: >-
            An error occurred while importing the labware signatures (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/labware-signature/create:
    put:
      tags:
        - LabwareSignature
      summary: >-
        Creates a labware signature for a new labware using the provided deck
        image and position.
      description: >-
        Creates a labware signature for a new labware using the provided deck
        image and position. Note: Only for new labware and does not import.
      operationId: CreateLabwareSignature
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                File:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The deck image PNG file compressed file
                PositionID:
                  type: integer
                  description: The given position to create the signature for
                  format: int32
                ReferenceLabwareId:
                  type: string
                  description: The reference ID of the labware to create the signature for
            encoding:
              File:
                style: form
              PositionID:
                style: form
              ReferenceLabwareId:
                style: form
      responses:
        '200':
          description: Success
        '400':
          description: >-
            An error occurred while creating the labware signature (see error
            message for details)
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: string
  /api/v1/lighting/deck-lights-setting-options:
    get:
      tags:
        - Lighting
      summary: Get all options for deck lights setting
      description: Retrieves all available options for deck lights setting
      operationId: GetDeckLightsSettingOptions
      responses:
        '200':
          description: The list of all options for deck lights setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeckLightsSettingOptionsGetDto'
        '400':
          description: No options for deck lights setting were found
          content:
            application/json:
              schema:
                type: string
  /api/v1/lighting:
    get:
      tags:
        - Lighting
      summary: Get the current global lighting settings
      description: Retrieves the global lighting settings that are currently set
      operationId: GetLightingSettings
      responses:
        '200':
          description: The list of current global light settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LightingSettingsDto'
        '400':
          description: No current global light settings were found
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - Lighting
      summary: Update the global lighting settings
      description: Updates the global lighting settings
      operationId: UpdateLightingSettings
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/LightingSettingsDto'
          application/json:
            schema:
              $ref: '#/components/schemas/LightingSettingsDto'
          text/json:
            schema:
              $ref: '#/components/schemas/LightingSettingsDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LightingSettingsDto'
      responses:
        '200':
          description: The global lighting settings were updated successfully
          content:
            application/json:
              schema:
                type: string
        '400':
          description: >-
            Failed to update the global lighting settings (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes:
    get:
      tags:
        - LiquidClass
      summary: Retrieves the current liquid types
      description: ''
      operationId: GetAllMLPrepLiquidTypes
      responses:
        '200':
          description: The list of liquid types
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LiquidTypeDto'
        '400':
          description: >-
            An error occurred while retrieving liquid types (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - LiquidClass
      summary: Saves a new liquid type
      description: ''
      operationId: SaveAsLiquid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/SaveAsLiquidDto'
          application/json:
            schema:
              $ref: '#/components/schemas/SaveAsLiquidDto'
          text/json:
            schema:
              $ref: '#/components/schemas/SaveAsLiquidDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/SaveAsLiquidDto'
      responses:
        '204':
          description: Success
        '400':
          description: >-
            An error occurred while saving the liquid type (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - LiquidClass
      summary: Updates an existing liquid type
      description: ''
      operationId: SaveLiquid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveLiquidDto'
      responses:
        '204':
          description: Success
        '400':
          description: >-
            An error occurred while updating the liquid type (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/batch-delete:
    post:
      tags:
        - LiquidClass
      summary: Deletes a set of liquid types
      description: ''
      operationId: BatchDeleteLiquids
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/BatchDeleteLiquidDto'
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDeleteLiquidDto'
          text/json:
            schema:
              $ref: '#/components/schemas/BatchDeleteLiquidDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/BatchDeleteLiquidDto'
      responses:
        '204':
          description: Success
        '400':
          description: >-
            An error occurred while deleting the liquid type(s) (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/find-usage:
    post:
      tags:
        - LiquidClass
      summary: Finds all protocols which use the liquid type(s)
      description: ''
      operationId: FindProtocolUsage
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/LiquidUsagePostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/LiquidUsagePostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/LiquidUsagePostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LiquidUsagePostDto'
      responses:
        '200':
          description: The list of liquids with the protocols that use them
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LiquidUsageDto'
        '400':
          description: >-
            An error occurred while retrieving protocols with the provided
            liquid types (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/settings:
    get:
      tags:
        - LiquidClass
      summary: Retrieves the liquid settings for the given query parameters
      description: "The liquid settings depend on a few parameters. \r\n<p><b>liquidType</b>: (supported types can be retrieved using GET /)</p>\r\n<p><b>channelSelection</b>: (OneChannel, TwoChannel, EightChannel, or Unknown)</p> \r\n<p><b>tipName</b>: (the labware reference id for the tip labware)</p>\r\n<p><b>tipStartPoint</b>: (FromLiquidLevel, or FromContainerBottom)</p>\r\n<p><b>multiDispense</b>: (true or false)</p>\r\n<p><b>dispenseVolume</b>: (the ammount of volume getting dispensed in μL)</p>"
      operationId: GetLiquidSettings
      parameters:
        - name: liquidType
          in: query
          description: The liquid type name (supported types can be retrieved using GET /)
          required: true
          schema:
            type: string
        - name: channelSelection
          in: query
          description: >-
            The channel(s) used (OneChannel, TwoChannel, EightChannel, or
            Unknown)
          required: true
          schema:
            type: string
        - name: tipName
          in: query
          description: The labware reference name for the tips used
          required: true
          schema:
            type: string
        - name: tipStartPoint
          in: query
          description: >-
            Where the tip is transfering the liquid from (FromLiquidLevel, or
            FromContainerBottom)
          required: true
          schema:
            type: string
        - name: multiDispense
          in: query
          description: Whether it is for multi-dispense or not
          required: true
          schema:
            type: boolean
        - name: dispenseVolume
          in: query
          description: The ammount of volume getting dispensed in μL
          required: true
          schema:
            type: number
            format: double
      responses:
        '200':
          description: The liquid settings for the given query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LiquidSettingsDto'
        '400':
          description: >-
            An error occurred while retrieving the liquid settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/import/{ignoreLabwareDefinitionFiles}:
    put:
      tags:
        - LiquidClass
      summary: Import a liquid class from a file
      description: ''
      operationId: ImportLiquidClass
      parameters:
        - name: ignoreLabwareDefinitionFiles
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
                FilesToOverwrite:
                  type: string
                  description: Specify which files should be overwritten
                ZipFileProtocolEntry:
                  type: string
                  description: The zip file for the protocol
                NewProtocolName:
                  type: string
                  description: >-
                    The new name for the protocol if a protocol with the same
                    name exists
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
              FilesToOverwrite:
                style: form
              ZipFileProtocolEntry:
                style: form
              NewProtocolName:
                style: form
      responses:
        '200':
          description: The liquid class import results
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileImportResult'
        '400':
          description: >-
            An error occurred while importing the liquid class (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/find-existing-imports:
    post:
      tags:
        - LiquidClass
      summary: Check if a liquid class exists before importing it
      description: ''
      operationId: FindExistingLiquidClassImports
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
      responses:
        '200':
          description: The existing liquid class files
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExistingFile'
        '400':
          description: >-
            An error occurred while finding existing liquid class files (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/liquid-classes/export:
    get:
      tags:
        - LiquidClass
      summary: Export the file containing the specified liquid types
      description: ''
      operationId: ExportLiquidClass
      parameters:
        - name: liquids
          in: query
          description: The liquid types to export
          required: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: The existing liquid class files
          content:
            application/zip:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: >-
            An error occurred while exporting the liquid class files (see error
            message for details)
          content:
            application/zip:
              schema:
                type: string
            application/json:
              schema:
                type: string
  /api/v1/maintenance/initialize:
    post:
      tags:
        - Maintenance
      summary: Creates initial maintenance values for a fresh install and updates.
      description: This should be used at first time setup and every update.
      operationId: InitializeMaintenance
      responses:
        '200':
          description: Initialize successfully completed
        '400':
          description: Initialize was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance:
    get:
      tags:
        - Maintenance
      summary: Retrieves all maintenance procedures
      description: ''
      operationId: Get
      responses:
        '200':
          description: Get procedures was successful
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProcedureDto'
              example:
                - id: 1305bd608cc6486793af632284be9553
                  status: Ok
                  name: Procedure1
                  info: Info1
                  lastExecutionTime: '2026-04-29T07:13:24.275456-07:00'
                - id: a787e117b4234a41bc87765d1abbf779
                  status: Expired
                  name: Procedure2
                  info: Info2
                  lastExecutionTime: '2026-04-09T07:13:24.275456-07:00'
        '400':
          description: Get procedures was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/{id}:
    get:
      tags:
        - Maintenance
      summary: Retrieves maintenance details of a specific procedure
      description: ''
      operationId: GetById
      parameters:
        - name: id
          in: path
          description: The id of the maintenance procedure
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Get procedure was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MaintenanceGetDetailDto'
              example:
                id: fb5084ff4305445295493dc37c61d317
                status: Ok
                name: Maintenance Procedure 1
                dueDateTime: '2026-05-07T07:13:24.275456-07:00'
                lastExecutionTime: '2026-04-30T07:13:24.275456-07:00'
        '400':
          description: Get procedure was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Maintenance
      summary: Starts a maintenance procedure
      description: ''
      operationId: Post
      parameters:
        - name: id
          in: path
          description: maintenance procedure id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Post procedure was successful
        '400':
          description: Post procedure was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/images/{imageName}:
    get:
      tags:
        - Maintenance
      summary: Retrieves jpg image from the maintenance image directory
      description: >-
        Images should be placed in: {Instinct
        Directory}\bin\GraphicsResources\Dialog\
      operationId: GetMaintenanceImage
      parameters:
        - name: imageName
          in: path
          description: file name with no extension
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File stream of image
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Get image was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/errors:
    get:
      tags:
        - Maintenance
      summary: Retrieve list of errors that occurred during the maintenance procedure
      description: ''
      operationId: GetMaintenanceErrors
      responses:
        '200':
          description: List of errors
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MaintenanceErrorDto'
              example:
                - message: Continue
                  response: Failed to complete maintenance.
                - message: Abort
                  response: Failed to complete maintenance 2.
        '400':
          description: Get errors was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/channel-counters:
    get:
      tags:
        - Maintenance
      summary: Retrieves the counters for each channel
      description: ''
      operationId: GetChannelCounters
      responses:
        '200':
          description: List of channel counters
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChannelCounterDto'
              example:
                - name: Front
                  tipPickUpCounter: 200
                  tipEjectCounter: 199
                  aspirateCounter: 50
                  dispenseCounter: 100
                - name: Rear
                  tipPickUpCounter: 137
                  tipEjectCounter: 137
                  aspirateCounter: 220
                  dispenseCounter: 220
        '400':
          description: >-
            Get channel counters was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/reset-channel-counters/{channel}:
    post:
      tags:
        - Maintenance
      summary: Reset the counts for a channel or mph
      description: ''
      operationId: ResetChannelCounters
      parameters:
        - name: channel
          in: path
          description: channel to reset (front, rear, or mph)
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Reset channel counters was successful
        '400':
          description: >-
            Reset channel counters was unsuccessful (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/uv-routine-interval-options:
    get:
      tags:
        - Maintenance
      summary: Get all options for the UV Decontamination routine interval setting
      description: >-
        Retrieves all available options for the UV Decontamination routine
        interval setting
      operationId: GetUVRoutineIntervalOptions
      responses:
        '200':
          description: >-
            The list of all options for the UV Decontamination routine interval
            setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UVRoutineIntervalSettingOptionsDto'
        '400':
          description: >-
            No options for the UV Decontamination routine interval setting were
            found
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/uv-routine-settings:
    get:
      tags:
        - Maintenance
      summary: Retrieves the UV Decontamination routine settings
      description: ''
      operationId: GetUVRoutineSettings
      responses:
        '200':
          description: UV Decontamination routine settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UVRoutineSettingsDto'
        '400':
          description: >-
            Get UV Decontamination routine settings was unsuccessful (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - Maintenance
      summary: Set the UV Decontamination routine settings
      description: ''
      operationId: SetUVRoutineSettings
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/UVRoutineSettingsDto'
          application/json:
            schema:
              $ref: '#/components/schemas/UVRoutineSettingsDto'
          text/json:
            schema:
              $ref: '#/components/schemas/UVRoutineSettingsDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UVRoutineSettingsDto'
      responses:
        '200':
          description: Setting UV Decontamination routine settings was successful
        '400':
          description: >-
            Setting UV Decontamination routine settings was was unsuccessful
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/abort:
    post:
      tags:
        - Maintenance
      summary: Aborts the maintenance procedure if one is running
      description: ''
      operationId: AbortMaintenance
      responses:
        '200':
          description: Abort procedure was successful
        '400':
          description: Abort procedure was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/maintenance/close-view:
    post:
      tags:
        - Maintenance
      summary: Sends the response to a view
      description: >-
        Each view may have different requested responses. These may include
        ok/cancel/yes/no response and any settings or choices.
      operationId: CloseMaintenanceView
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          text/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/*+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
      responses:
        '200':
          description: Close view was successful
        '400':
          description: Close view was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration:
    get:
      tags:
        - NetworkConfiguration
      summary: Retrieves the current network configuration
      description: ''
      operationId: GetNetworkConfiguration
      responses:
        '200':
          description: The current network configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkConfigurationGetDto'
        '400':
          description: >-
            Failed to get the current network configuration (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - NetworkConfiguration
      summary: Updates the current network configuration
      description: ''
      operationId: UpdateNetworkConfiguration
      parameters:
        - name: force
          in: query
          description: Option to force the update
          required: true
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkConfigurationBaseDto'
      responses:
        '200':
          description: The update result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkConfigurationResult'
        '400':
          description: >-
            Failed to update the current network configuration (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration/default:
    put:
      tags:
        - NetworkConfiguration
      summary: Reset the current network configuration back to default settings
      description: ''
      operationId: SetDefaultNetworkConfiguration
      parameters:
        - name: force
          in: query
          description: Option to force the update
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: The reset result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkConfigurationResult'
        '400':
          description: >-
            Failed to reset the current network configuration (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration/changes:
    get:
      tags:
        - NetworkConfiguration
      summary: Retrieves the changes made to the network configuration
      description: ''
      operationId: GetNetworkConfigurationChanges
      responses:
        '200':
          description: The changes result
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InstrumentNetworkConfigurationChange'
        '400':
          description: >-
            Failed to get the changes to the network configuration (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration/remote-desktop-enabled:
    get:
      tags:
        - NetworkConfiguration
      summary: Gets whether or not Windows Remote Desktop is enabled
      responses:
        '200':
          description: Retreiving Windows Remote Desktop state was successful
        '400':
          description: Failed to retrieve Remote Desktop enabled state
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration/enable-remote-desktop:
    put:
      tags:
        - NetworkConfiguration
      summary: Enables Windows Remote Desktop
      responses:
        '200':
          description: Windows Remote Desktop was successfully enabled
        '400':
          description: Failed enable Windows Remote Desktop
          content:
            application/json:
              schema:
                type: string
  /api/v1/network-configuration/disable-remote-desktop:
    put:
      tags:
        - NetworkConfiguration
      summary: Disables Windows Remote Desktop
      responses:
        '200':
          description: Windows Remote Desktop was successfully disabled
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InstrumentNetworkConfigurationChange'
        '400':
          description: Failed to disable Windows Remote Desktop
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/request-powerdown:
    put:
      tags:
        - Power
      summary: Request a power down
      description: ''
      operationId: RequestPowerdown
      responses:
        '200':
          description: Request to powerdown was received successfully
        '400':
          description: >-
            An error occurred during the request to power down (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/confirm-powerdown:
    put:
      tags:
        - Power
      summary: Confirm the power down
      description: ''
      operationId: ConfirmPowerdown
      responses:
        '200':
          description: Confirm the power down was received successfully
        '400':
          description: >-
            An error occurred during the confirmation to power down (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/cancel-powerdown:
    put:
      tags:
        - Power
      summary: Cancel the power down request
      description: ''
      operationId: CancelPowerdown
      responses:
        '200':
          description: Cancelling the power down was received successfully
        '400':
          description: >-
            An error occurred during the cancellation of the power down (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/channel-power/{enabled}:
    put:
      tags:
        - Power
      summary: Set the channel power on or off
      description: ''
      operationId: SetChannelPower
      parameters:
        - name: enabled
          in: path
          description: Enable or disable
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: Channel power was set successfully
        '400':
          description: >-
            An error occurred while setting the channel power (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/is-initialized:
    get:
      tags:
        - Power
      summary: Check if the power service is initialized
      description: ''
      operationId: IsInitialized
      responses:
        '200':
          description: The power service is initialized state
          content:
            application/json:
              schema:
                type: boolean
        '400':
          description: >-
            An error occurred while getting the status of the initialization of
            the power service (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/servo-power/{enabled}:
    put:
      tags:
        - Power
      summary: Enable or disable the servo power
      description: ''
      operationId: SetServoPower
      parameters:
        - name: enabled
          in: path
          description: Enable or disable
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: The servo power was set successfully
          content:
            application/json:
              schema:
                type: boolean
        '400':
          description: >-
            An error occurred while setting the servo power (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/power/monitor-powerdown:
    put:
      tags:
        - Power
      summary: Subscribe to power-down events
      description: ''
      operationId: MonitorPowerdown
      responses:
        '200':
          description: The subscription was successful
        '400':
          description: >-
            An error occurred while subscribing to the power-down event monitor
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run:
    get:
      tags:
        - ProtocolRun
      summary: Get the current run status
      description: ''
      operationId: GetRunStatus
      responses:
        '200':
          description: The current run status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatusDto'
        '400':
          description: Failed to get the current run status (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/create:
    post:
      tags:
        - ProtocolRun
      summary: Creates a new run, schedules, and populates load instructions
      description: "Upon completion a LoadInstrucionReadyEvent message is sent over the RunStatus web socket notfiying\r\nany connected clients that load instructions can be retrieved by sending a get to this controller /LoadInstructions."
      operationId: CreateRun
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/RunProtocolDto'
          application/json:
            schema:
              $ref: '#/components/schemas/RunProtocolDto'
          text/json:
            schema:
              $ref: '#/components/schemas/RunProtocolDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RunProtocolDto'
      responses:
        '200':
          description: The run was created successfully
        '400':
          description: Failed to create a run (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/submit-hit-pick-file:
    put:
      tags:
        - ProtocolRun
      summary: Submit the hit-picking file
      description: ''
      operationId: SubmitHitpickFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HitpickFileDto'
      responses:
        '200':
          description: The hit-picking file was submitted successfully
        '400':
          description: >-
            Failed to submit the hit-picking file (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/submit-reagent-from-file-file:
    put:
      tags:
        - ProtocolRun
      summary: Submit the file for reagent from file
      description: ''
      operationId: SubmitReagentFromFileFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HitpickFileDto'
      responses:
        '200':
          description: The file for reagent from file was submitted successfully
        '400':
          description: >-
            Failed to submit the file for reagent from file (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/submit-barcodes:
    put:
      tags:
        - ProtocolRun
      summary: Submit the barcodes
      description: ''
      operationId: SubmitBarcodes
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitBarcodeDto'
      responses:
        '200':
          description: The barcodes were submitted successfully
        '400':
          description: Failed to submit the barcodes (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/submit-normalization-file:
    put:
      tags:
        - ProtocolRun
      summary: Submit the normalization file
      description: ''
      operationId: SubmitNormalizationFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormalizationFileDto'
      responses:
        '200':
          description: The normalization file was submitted successfully
        '400':
          description: >-
            Failed to submit the normalization file (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/rtsa:
    post:
      tags:
        - ProtocolRun
      summary: Set the runtime sample assignment
      description: ''
      operationId: SetRtsaSelection
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/RtsaSelectionDto'
          application/json:
            schema:
              $ref: '#/components/schemas/RtsaSelectionDto'
          text/json:
            schema:
              $ref: '#/components/schemas/RtsaSelectionDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RtsaSelectionDto'
      responses:
        '200':
          description: The runtime sample assignment completed successfully
        '400':
          description: >-
            Failed to set the runtime sample assignment (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/simulation-speed:
    get:
      tags:
        - ProtocolRun
      summary: Get the simulation speed
      description: ''
      operationId: GetSimulationSpeed
      responses:
        '200':
          description: The simulation speed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulationSpeedDto'
        '400':
          description: Failed to get the simulation speed (see error message for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - ProtocolRun
      summary: Update the simulation speed
      description: ''
      operationId: UpdateSimulationSpeed
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulationSpeedDto'
      responses:
        '200':
          description: The simulation speed was updated successfully
        '400':
          description: >-
            Failed to update the simulation speed (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/load-instructions:
    get:
      tags:
        - ProtocolRun
      summary: Retrieve the load instructions
      description: Load instructions are only returned if RunState = 'Loading'
      operationId: GetLoadInstructions
      responses:
        '200':
          description: The loading instructions for each deck position
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/DeckLoadPositionDto'
                    - $ref: '#/components/schemas/TipLoadPositionDto'
                    - $ref: '#/components/schemas/TroughLoadPositionDto'
                    - $ref: '#/components/schemas/TubeLoadPositionDto'
                  description: Deck position information
        '400':
          description: Failed get the loading instructions (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/reload-instructions:
    get:
      tags:
        - ProtocolRun
      summary: Retrieve the re-load instructions
      description: Load instructions are only returned if RunState = 'Loading'
      operationId: GetReloadInstructions
      responses:
        '200':
          description: The re-loading instructions for each deck position
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/DeckLoadPositionDto'
                    - $ref: '#/components/schemas/TipLoadPositionDto'
                    - $ref: '#/components/schemas/TroughLoadPositionDto'
                    - $ref: '#/components/schemas/TubeLoadPositionDto'
                  description: Deck position information
        '400':
          description: >-
            Failed get the re-loading instructions (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/load-complete:
    put:
      tags:
        - ProtocolRun
      summary: Complete the loading for the run
      description: Begins execution of a run after loading is complete.
      operationId: LoadComplete
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoadCompleteDto'
      responses:
        '200':
          description: Loading completed successfully
        '400':
          description: >-
            Error occurred while completing the loading (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-run/abort:
    put:
      tags:
        - ProtocolRun
      summary: Abort the current run
      description: ''
      operationId: AbortProtocolRun
      responses:
        '200':
          description: Run was aborted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatusChangedResult'
  /api/v1/protocol-run/pause:
    put:
      tags:
        - ProtocolRun
      summary: Pause the current run
      description: ''
      operationId: Pause
      responses:
        '200':
          description: Run was paused successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatusChangedResult'
  /api/v1/protocol-run/resume:
    put:
      tags:
        - ProtocolRun
      summary: Resume the current run
      description: ''
      operationId: Resume
      responses:
        '200':
          description: Run was resumed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatusChangedResult'
  /api/v1/protocol-run/cleanup-unloading:
    put:
      tags:
        - ProtocolRun
      summary: Post Unload Cleanup
      description: ''
      operationId: PostUnloadCleanup
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatusChangedResult'
  /api/v1/protocol-run/normalization-file-errors/{protocolId}/{stepId}:
    get:
      tags:
        - ProtocolRun
      summary: Finds all normalization worklist items that are invalid
      description: ''
      operationId: GetNormalizationFileErrors
      parameters:
        - name: protocolId
          in: path
          description: The id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: stepId
          in: path
          description: The id of the normalization step
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: >-
            The normalization file errors for the provided protocol in the
            normalization step
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizationFileErrorsDto'
        '400':
          description: >-
            An error occurred while verifying the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols:
    get:
      tags:
        - Protocols
      summary: Retrieves the list of protocols
      description: ''
      operationId: GetProtocolSummaries
      responses:
        '200':
          description: The list of protocols
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProtocolSummaryDto'
        '400':
          description: >-
            An error occurred while retrieving the protocols (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Protocols
      summary: Creates a new protocol
      description: ''
      operationId: AddProtocol
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ProtocolPostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ProtocolPostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ProtocolPostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ProtocolPostDto'
      responses:
        '201':
          description: The created protocol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtocolPostResponse'
        '400':
          description: >-
            An error occurred while creating the protocol (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/names:
    get:
      tags:
        - Protocols
      summary: Retrieves the list of protocol names
      description: ''
      operationId: GetProtocolNames
      responses:
        '200':
          description: The list of protocols
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProtocolNameDto'
        '400':
          description: >-
            An error occurred while retrieving the protocol name (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/properties/step-types:
    get:
      tags:
        - Protocols
      responses:
        '200':
          description: Success
  /api/v1/protocols/get-unique-name:
    get:
      tags:
        - Protocols
      summary: Generates a unique name from an existing protocol name
      description: ''
      operationId: GetUniqueName
      parameters:
        - name: existingProtocolName
          in: query
          description: An existing protocol name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The unique name for a protocol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UniqueNameGetDto'
  /api/v1/protocols/verify/{id}:
    get:
      tags:
        - Protocols
      summary: Retrieves the verification data of the protocol
      description: ''
      operationId: GetProtocolVerification
      parameters:
        - name: id
          in: path
          description: The id for the protocol
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The verification data of the protocol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtocolVerifyDto'
        '400':
          description: >-
            An error occurred while retrieving the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/preview/{id}:
    get:
      tags:
        - Protocols
      summary: Retrieves the preview data of the protocol
      description: ''
      operationId: GetProtocolPreviews
      parameters:
        - name: id
          in: path
          description: The id for the protocol
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The preview data of the protocol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtocolPreviewDto'
        '400':
          description: >-
            An error occurred while retrieving the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/{id}:
    get:
      tags:
        - Protocols
      summary: Retrieves the protocol
      description: ''
      operationId: GetProtocol
      parameters:
        - name: id
          in: path
          description: The id for the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: includeFullStepData
          in: query
          description: >-
            If full step data should be included, basic step data is always
            included
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: The protocol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtocolGetDto'
        '400':
          description: >-
            An error occurred while retrieving the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/validate-name/{protocolId}/{name}:
    get:
      tags:
        - Protocols
      summary: Validates the name for a protocol
      description: ''
      operationId: ValidateName
      parameters:
        - name: protocolId
          in: path
          description: The id for the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: name
          in: path
          description: The name to be validated
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the protocol name validation
          content:
            application/json:
              schema: {}
  /api/v1/protocols/validate/{protocolId}:
    get:
      tags:
        - Protocols
      summary: Validates a protocol
      description: "In order to run any protocol, it must first be validated. The validation process verifies that the data provided\r\nis correct and that the protocol can run successfully. If the protocol is not valid, the errors returned should show which parameters or steps are\r\nincorrect or will cause runtime problems."
      operationId: Validate
      parameters:
        - name: protocolId
          in: path
          description: The id for the protocol
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The result of the protocol name validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProtocolValidationResultDto'
        '400':
          description: >-
            An error occurred while validating the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/rename/{protocolId}:
    put:
      tags:
        - Protocols
      summary: Rename a protocol
      description: ''
      operationId: RenameProtocol
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol to be renamed
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProtocolRenamePutDto'
      responses:
        '200':
          description: The protocol was renamed successfully
        '400':
          description: >-
            An error occurred while renaming the protocol (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/report-settings/{protocolId}:
    put:
      tags:
        - Protocols
      summary: Update a protocol's report settings
      description: ''
      operationId: UpdateReportSettings
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol to be renamed
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportSettingsDto'
      responses:
        '200':
          description: The protocol's report settings were updated successfully
        '400':
          description: >-
            An error occurred while updating the protocol's report settings (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/batch-delete:
    post:
      tags:
        - Protocols
      summary: Delete the protocol(s)
      description: ''
      operationId: BatchDeleteProtocols
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          text/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          application/*+json:
            schema:
              type: array
              items:
                type: integer
                format: int32
      responses:
        '204':
          description: The protocols were removed successfully
        '400':
          description: >-
            An error occurred while deleting the protocol(s) (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/export:
    get:
      tags:
        - Protocols
      summary: Export the protocol(s)
      description: ''
      operationId: ExportProtocol
      parameters:
        - name: protocolIds
          in: query
          description: The id(s) of the protocol(s) to export
          required: true
          schema:
            type: array
            items:
              type: integer
              format: int32
      responses:
        '200':
          description: The protocols were exported successfully
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the protocol(s) (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/restore-catalog:
    post:
      tags:
        - Protocols
      summary: Restore the catalog of protocols
      description: ''
      operationId: ImportCatalog
      responses:
        '200':
          description: The protocols were restored successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileImportResult'
        '400':
          description: >-
            An error occurred while restoring the protocol(s) (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/import:
    put:
      tags:
        - Protocols
      summary: Import the protocols
      description: ''
      operationId: ImportProtocol
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
                FilesToOverwrite:
                  type: string
                  description: Specify which files should be overwritten
                ZipFileProtocolEntry:
                  type: string
                  description: The zip file for the protocol
                NewProtocolName:
                  type: string
                  description: >-
                    The new name for the protocol if a protocol with the same
                    name exists
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
              FilesToOverwrite:
                style: form
              ZipFileProtocolEntry:
                style: form
              NewProtocolName:
                style: form
      responses:
        '200':
          description: The protocols were imported successfully
        '400':
          description: >-
            An error occurred while importing the protocol(s) (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
        '406':
          description: >-
            An error occurred while reading the provided file (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/update:
    put:
      tags:
        - Protocols
      summary: Update the protocol from a file
      description: >-
        Takes an exported protocol file, but instead of creating a new protocol
        it updates an existing protocol.
      operationId: Update
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The file(s)
                OverwriteAll:
                  type: boolean
                  description: Whether or not existing files should be overwritten
                FilesToOverwrite:
                  type: string
                  description: Specify which files should be overwritten
                ZipFileProtocolEntry:
                  type: string
                  description: The zip file for the protocol
                NewProtocolName:
                  type: string
                  description: >-
                    The new name for the protocol if a protocol with the same
                    name exists
            encoding:
              Files:
                style: form
              OverwriteAll:
                style: form
              FilesToOverwrite:
                style: form
              ZipFileProtocolEntry:
                style: form
              NewProtocolName:
                style: form
      responses:
        '200':
          description: The protocol was updated successfully
        '400':
          description: >-
            An error occurred while updating the protocol (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
        '406':
          description: >-
            An error occurred while reading the provided file (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/save-as:
    put:
      tags:
        - Protocols
      summary: Save a copy of the protocol
      description: ''
      operationId: SaveAs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProtocolSaveAsPutDto'
      responses:
        '200':
          description: The protocol was copied successfully
        '400':
          description: >-
            An error occurred while copying the protocol (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/find-existing-protocols:
    post:
      tags:
        - Protocols
      summary: Check if a protocol exist found in the import file
      description: ''
      operationId: FindExistingProtocols
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: The import files
                ZipFileProtocolEntry:
                  type: string
                  description: The zip file protocol
            encoding:
              Files:
                style: form
              ZipFileProtocolEntry:
                style: form
      responses:
        '200':
          description: The list of existing protocols
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExistingProtocolImport'
        '400':
          description: >-
            An error occurred while finding existing protocols (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/favorite:
    post:
      tags:
        - Protocols
      summary: Set the favorite status of a protocol
      description: ''
      operationId: SetProtocolFavorite
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ProtocolFavoritePostDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ProtocolFavoritePostDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ProtocolFavoritePostDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ProtocolFavoritePostDto'
      responses:
        '200':
          description: The favorite status was updated successfully
        '400':
          description: >-
            An error occurred while setting the favorite status for a protocol
            (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/{protocolId}/step:
    post:
      tags:
        - ProtocolSteps
      summary: Creates a new step and adds it to the protocol
      description: ''
      operationId: CreateProtocolStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/StepPostPutDto'
          application/json:
            schema:
              $ref: '#/components/schemas/StepPostPutDto'
          text/json:
            schema:
              $ref: '#/components/schemas/StepPostPutDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/StepPostPutDto'
      responses:
        '201':
          description: The protocol step that was created
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/StepGetDto'
                  - $ref: '#/components/schemas/AddReagentStepGetDto'
                  - $ref: '#/components/schemas/ReplicateSamplesStepGetDto'
                  - $ref: '#/components/schemas/TransferSamplesStepGetDto'
                  - $ref: '#/components/schemas/HeatShakeStepGetDto'
                  - $ref: '#/components/schemas/PauseStepGetDto'
                  - $ref: '#/components/schemas/HitPickingStepGetDto'
                  - $ref: '#/components/schemas/SerialDilutionStepGetDto'
                  - $ref: '#/components/schemas/RtsaStepGetDto'
                  - $ref: '#/components/schemas/BarcodeStepGetDto'
                  - $ref: '#/components/schemas/TransportStepGetDto'
                  - $ref: '#/components/schemas/NormalizationStepGetDto'
                  - $ref: '#/components/schemas/ReagentFromFileStepGetDto'
                  - $ref: '#/components/schemas/LightingStepGetDto'
                  - $ref: '#/components/schemas/HeatCoolStepGetDto'
                  - $ref: '#/components/schemas/LidStepGetDto'
                  - $ref: '#/components/schemas/HepaStepGetDto'
        '400':
          description: >-
            An error occurred while attempting to create the step (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
        '500':
          description: Invalid protocol id
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - ProtocolSteps
      summary: Update a step within a protocol
      description: ''
      operationId: PutProtocolStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StepPostPutDto'
      responses:
        '200':
          description: The step was updated successfully
        '400':
          description: >-
            An error occurred while attempting to update the step (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    get:
      tags:
        - ProtocolSteps
      summary: Get steps within a protocol
      description: ''
      operationId: GetProtocolSteps
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: offset
          in: query
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          schema:
            type: integer
            format: int32
        - name: includeFullStepData
          in: query
          description: >-
            If full step data should be included, basic step data is always
            included
          schema:
            type: boolean
            default: true
        - name: includeCustomLiquidSettings
          in: query
          description: If custom liquid settings should be included
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: The list of steps
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/StepGetDto'
                    - $ref: '#/components/schemas/AddReagentStepGetDto'
                    - $ref: '#/components/schemas/ReplicateSamplesStepGetDto'
                    - $ref: '#/components/schemas/TransferSamplesStepGetDto'
                    - $ref: '#/components/schemas/HeatShakeStepGetDto'
                    - $ref: '#/components/schemas/PauseStepGetDto'
                    - $ref: '#/components/schemas/HitPickingStepGetDto'
                    - $ref: '#/components/schemas/SerialDilutionStepGetDto'
                    - $ref: '#/components/schemas/RtsaStepGetDto'
                    - $ref: '#/components/schemas/BarcodeStepGetDto'
                    - $ref: '#/components/schemas/TransportStepGetDto'
                    - $ref: '#/components/schemas/NormalizationStepGetDto'
                    - $ref: '#/components/schemas/ReagentFromFileStepGetDto'
                    - $ref: '#/components/schemas/LightingStepGetDto'
                    - $ref: '#/components/schemas/HeatCoolStepGetDto'
                    - $ref: '#/components/schemas/LidStepGetDto'
                    - $ref: '#/components/schemas/HepaStepGetDto'
        '400':
          description: >-
            An error occurred while retrieving the steps (see error message for
            details)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultErrorDto'
  /api/v1/protocols/{protocolId}/step/reorder-step:
    put:
      tags:
        - ProtocolSteps
      summary: Reorders the step within a protocol
      description: ''
      operationId: ReorderStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/StepReorder'
      responses:
        '200':
          description: The steps were reordered successfully
        '400':
          description: >-
            An error occurred while attempting to reorder the steps (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/{protocolId}/step/rename/{stepId}:
    put:
      tags:
        - ProtocolSteps
      summary: Rename a step within a protocol
      description: ''
      operationId: PatchProtocolStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: stepId
          in: path
          description: The database id of the step
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StepRenamePutDto'
      responses:
        '200':
          description: The step was renamed successfully
        '400':
          description: >-
            An error occurred while attempting to rename the step (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/{protocolId}/step/disable/{stepId}:
    put:
      tags:
        - ProtocolSteps
      summary: Enable or Disable a step within a protocol
      description: ''
      operationId: SetDisabled
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: stepId
          in: path
          description: The database id of the step
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StepDisablePutDto'
      responses:
        '200':
          description: The step's disable property was set successfully
        '400':
          description: >-
            An error occurred while attempting to set the disabled property of
            the step (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocols/{protocolId}/step/{stepId}:
    get:
      tags:
        - ProtocolSteps
      summary: Get a step within a protocol
      description: ''
      operationId: GetProtocolStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: stepId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: includeCustomLiquidSettings
          in: query
          description: If custom liquid settings should be included
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: The step
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/StepGetDto'
                  - $ref: '#/components/schemas/AddReagentStepGetDto'
                  - $ref: '#/components/schemas/ReplicateSamplesStepGetDto'
                  - $ref: '#/components/schemas/TransferSamplesStepGetDto'
                  - $ref: '#/components/schemas/HeatShakeStepGetDto'
                  - $ref: '#/components/schemas/PauseStepGetDto'
                  - $ref: '#/components/schemas/HitPickingStepGetDto'
                  - $ref: '#/components/schemas/SerialDilutionStepGetDto'
                  - $ref: '#/components/schemas/RtsaStepGetDto'
                  - $ref: '#/components/schemas/BarcodeStepGetDto'
                  - $ref: '#/components/schemas/TransportStepGetDto'
                  - $ref: '#/components/schemas/NormalizationStepGetDto'
                  - $ref: '#/components/schemas/ReagentFromFileStepGetDto'
                  - $ref: '#/components/schemas/LightingStepGetDto'
                  - $ref: '#/components/schemas/HeatCoolStepGetDto'
                  - $ref: '#/components/schemas/LidStepGetDto'
                  - $ref: '#/components/schemas/HepaStepGetDto'
        '400':
          description: >-
            An error occurred while retrieving the step (see error message for
            details)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultErrorDto'
    delete:
      tags:
        - ProtocolSteps
      summary: Delete a step within a protocol
      description: ''
      operationId: DeleteProtocolStep
      parameters:
        - name: protocolId
          in: path
          description: The database id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: stepId
          in: path
          description: The database id of the step
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The step was deleted successfully
        '400':
          description: >-
            An error occurred while attempting to delete the step (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
        '500':
          description: >-
            An exception occurred while attempting to delete the step (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-hit-pick-worklist-file:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets hit pick worklist example with the format determined by the
        parameters
      description: ''
      operationId: GetExampleHitPickWorklistFile
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: specifiesSources
          in: query
          schema:
            type: boolean
        - name: specifiesTargets
          in: query
          schema:
            type: boolean
        - name: specifiesVolumes
          in: query
          schema:
            type: boolean
        - name: sourceLocationMethod
          in: query
          schema:
            type: string
        - name: destinationLocationMethod
          in: query
          schema:
            type: string
        - name: barcodeSourceType
          in: query
          schema:
            type: string
        - name: barcodeDestinationType
          in: query
          schema:
            type: string
      responses:
        '200':
          description: The example hit-pick worklist file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: >-
            Failed to get the example hit-pick worklist file (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-hit-pick-worklist-data:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets hit pick worklist example with the format determined by the
        parameters.
      description: ''
      operationId: GetExampleHitPickWorklistData
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: specifiesSources
          in: query
          schema:
            type: boolean
        - name: specifiesTargets
          in: query
          schema:
            type: boolean
        - name: specifiesVolumes
          in: query
          schema:
            type: boolean
        - name: sourceLocationMethod
          in: query
          schema:
            type: string
        - name: destinationLocationMethod
          in: query
          schema:
            type: string
        - name: barcodeSourceType
          in: query
          schema:
            type: string
        - name: barcodeDestinationType
          in: query
          schema:
            type: string
      responses:
        '200':
          description: The example hit-pick worklist data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorklistData'
        '500':
          description: >-
            Failed to get the example hit-pick worklist data (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-reagent-from-file-worklist-file:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets reagent from file worklist example file with the format determined
        by the parameters.
      description: ''
      operationId: GetExampleReagentFromFileWorklistFile
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: specifiesTargets
          in: query
          schema:
            type: boolean
        - name: specifiesVolumes
          in: query
          schema:
            type: boolean
        - name: destinationLocationMethod
          in: query
          schema:
            type: string
        - name: barcodeDestinationType
          in: query
          schema:
            type: string
      responses:
        '200':
          description: The example reagent from file worklist file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: >-
            Failed to get the example reagent from file worklist file (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-reagent-from-file-worklist-data:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets reagent from file worklist example with the format determined by
        the parameters.
      description: ''
      operationId: GetExampleReagentFromFileWorklistData
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: specifiesTargets
          in: query
          schema:
            type: boolean
        - name: specifiesVolumes
          in: query
          schema:
            type: boolean
        - name: destinationLocationMethod
          in: query
          schema:
            type: string
        - name: barcodeDestinationType
          in: query
          schema:
            type: string
      responses:
        '200':
          description: The example reagent from file worklist data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorklistData'
        '500':
          description: >-
            Failed to get the example reagent from file worklist data (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-normalization-worklist-file:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets Normalization worklist example file with the format determined by
        the parameters.
      description: ''
      operationId: GetExampleNormalizationWorklistFile
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: includeSourceId
          in: query
          schema:
            type: boolean
        - name: specifiesOptionalData
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: The example normalization worklist file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: >-
            Failed to get the example normalization worklist file (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-support/example-normalization-worklist-data:
    get:
      tags:
        - ProtocolSupport
      summary: >-
        Gets Normalization worklist example with the format determined by the
        parameters.
      description: ''
      operationId: GetExampleNormalizationWorklistData
      parameters:
        - name: includeAllColumns
          in: query
          schema:
            type: boolean
        - name: includeSourceId
          in: query
          schema:
            type: boolean
        - name: specifiesOptionalData
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: The example normalization worklist data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorklistData'
        '500':
          description: >-
            Failed to get the example normalization worklist data (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-verification/{id}:
    get:
      tags:
        - ProtocolVerification
      summary: Verify a protocol
      description: ''
      operationId: VerifyProtocol
      parameters:
        - name: id
          in: path
          description: The id of the protocol to verify
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The protocol verification data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VerificationScanResultDto'
        '400':
          description: >-
            An error occurred while verifying the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/protocol-verification/detect-tips/{protocolId}/{positionId}:
    get:
      tags:
        - ProtocolVerification
      summary: Detect the tips at a position for a given protocol
      description: ''
      operationId: DetectTips
      parameters:
        - name: protocolId
          in: path
          description: The id of the protocol
          required: true
          schema:
            type: integer
            format: int32
        - name: positionId
          in: path
          description: The id of the deck position where tips should be located
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The detected tip data for the provided protocol at the deck position
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResidualTipDataDto'
        '400':
          description: >-
            An error occurred while verifying the protocol (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/repair:
    post:
      tags:
        - Repair
      summary: Initiate a repair of the system
      description: ''
      operationId: StartRepair
      parameters:
        - name: delay
          in: query
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The repair was started successfully
        '400':
          description: >-
            An error occurred while initiating the repair (see error message for
            details)
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
            application/xml:
              schema:
                type: string
            text/xml:
              schema:
                type: string
  /api/v1/report/pvk/data/{id}:
    get:
      tags:
        - Report
      parameters:
        - name: id
          in: path
          description: Verification Run Id
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Get verification report data was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
        '400':
          description: >-
            Get Channel Calibration Results was unsuccessful (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/report/pvk/file/{verificationRunId}:
    get:
      tags:
        - Report
      summary: >-
        Retrieves the verification run report file from the provided
        verification run id
      description: ''
      operationId: GetVerificationReportFile
      parameters:
        - name: verificationRunId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The verification run report
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Failed to get the verification run report (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/report/pvk/export:
    get:
      tags:
        - Report
      summary: Export verification report(s)
      description: ''
      operationId: ExportVerificationReports
      parameters:
        - name: verificationRunIds
          in: query
          description: The id(s) of the verification report(s) to export
          required: true
          schema:
            type: array
            items:
              type: integer
              format: int32
      responses:
        '200':
          description: The verification report(s) were exported successfully
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the verification report(s) (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/report/pvk/file/{verificationRunId}/name:
    get:
      tags:
        - Report
      summary: >-
        Retrieves the verification run report file name from the provided
        verification run id
      description: ''
      operationId: GetReportName
      parameters:
        - name: verificationRunId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The verification run report
          content:
            application/json:
              schema:
                type: string
        '400':
          description: >-
            Failed to get the verification run report (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/roles:
    get:
      tags:
        - Roles
      summary: Get all available user roles
      description: ''
      operationId: GetAllRoles
      responses:
        '200':
          description: The user roles
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RoleDto'
        '400':
          description: >-
            An error occurred while getting the user roles (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/roles/summaries:
    get:
      tags:
        - Roles
      summary: Get a summary of all available user roles
      description: ''
      operationId: GetRoleSummaries
      responses:
        '200':
          description: The user roles
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RoleDto'
        '400':
          description: >-
            An error occurred while getting the user roles (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/roles/{id}:
    get:
      tags:
        - Roles
      summary: Get the permissions for a given user role
      description: ''
      operationId: GetRolePermissions
      parameters:
        - name: id
          in: path
          description: The id of the role
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The role permissions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PermissionDto'
        '400':
          description: >-
            An error occurred while getting the user role permissions (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data:
    get:
      tags:
        - RunData
      summary: Retrieves the data from all the recent runs
      description: ''
      operationId: GetAllRunData
      responses:
        '200':
          description: The run data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RunDataDto'
        '400':
          description: Failed to get the run data (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/{runDataId}:
    get:
      tags:
        - RunData
      summary: Retrieves the run data provided run ID
      description: ''
      operationId: GetRunData
      parameters:
        - name: runDataId
          in: path
          description: The run id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The run data object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunDataDto'
        '400':
          description: Failed to get the run data (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/{runDataId}/pdf:
    get:
      tags:
        - RunData
      summary: Retrieves the run data PDF report from the provided run ID
      description: ''
      operationId: GetRunDataFile
      parameters:
        - name: runDataId
          in: path
          description: The run id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The run data PDF file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Failed to get the run data PDF file (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/{runDataId}/pipetting-csv:
    get:
      tags:
        - RunData
      summary: Retrieves the run data pipetting CSV file from the provided run ID
      description: ''
      operationId: GetRunDataPipettingCsv
      parameters:
        - name: runDataId
          in: path
          description: The run id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The run data pipetting CSV file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Failed to get the run data pipetting CSV file (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/{runDataId}/pipetting-csv/{stepId}:
    get:
      tags:
        - RunData
      summary: >-
        Retrieves the run data pipetting CSV file from the provided run ID and
        step ID
      description: ''
      operationId: GetStepPipettingCsv
      parameters:
        - name: runDataId
          in: path
          description: The run id
          required: true
          schema:
            type: string
        - name: stepId
          in: path
          description: The step id
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The run data pipetting CSV file
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Failed to get the run data pipetting CSV file (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/get-run-result-enum:
    get:
      tags:
        - RunData
      summary: Gets the possible run results
      description: >-
        Return an array of the available results a run can have (Completed,
        Aborted, Error, Canceled)
      operationId: GetRunResultEnum
      responses:
        '200':
          description: The possible run results
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/run-data/date-range-options:
    get:
      tags:
        - RunData
      summary: Gets the possible date ranges
      description: ''
      operationId: GetDateRangeOptions
      responses:
        '200':
          description: The possible date ranges
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/run-data/{runDataIds}:
    delete:
      tags:
        - RunData
      summary: Deletes the run data
      description: ''
      operationId: DeleteRunData
      parameters:
        - name: runDataIds
          in: path
          description: The run id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The run data was deleted successfully
        '400':
          description: >-
            An error occurred while deleting the run data (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/batch-delete:
    post:
      tags:
        - RunData
      summary: Deletes the run data(s)
      description: ''
      operationId: BatchDeleteRunData
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: string
          application/json:
            schema:
              type: array
              items:
                type: string
          text/json:
            schema:
              type: array
              items:
                type: string
          application/*+json:
            schema:
              type: array
              items:
                type: string
      responses:
        '200':
          description: The run data was deleted successfully
        '400':
          description: >-
            An error occurred while deleting the run data  (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/run-data/export:
    get:
      tags:
        - RunData
      summary: Export run data file(s)
      description: ''
      operationId: ExportRunData
      parameters:
        - name: runDataId
          in: query
          description: The id(s) of the run data to export
          required: true
          schema:
            type: array
            items:
              type: string
        - name: includePdf
          in: query
          description: If the PDF report should be included
          schema:
            type: boolean
        - name: includeJson
          in: query
          description: If the JSON data should be included
          schema:
            type: boolean
        - name: includeCsv
          in: query
          description: If the CSV data should be included
          schema:
            type: boolean
        - name: separateCsvPerStep
          in: query
          description: If there should be separate CSV files per step
          schema:
            type: boolean
      responses:
        '200':
          description: The run data was exported successfully
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            An error occurred while exporting the run data (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/screenshots/{imageName}:
    get:
      tags:
        - Screenshots
      summary: Retrieves a screenshot image
      description: ''
      operationId: GetScreenshotPreview
      parameters:
        - name: imageName
          in: path
          description: name of the requested image
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Get Image was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
        '400':
          description: Get Image was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/screenshots:
    get:
      tags:
        - Screenshots
      summary: Gets screenshots
      description: ''
      operationId: GetScreenshots
      responses:
        '200':
          description: The screenshot files
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ScreenshotFileDto'
        '400':
          description: Unable to get screenshot files (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/screenshots/export:
    get:
      tags:
        - Screenshots
      summary: Exports screenshots
      description: ''
      operationId: ExportScreenshot
      parameters:
        - name: screenshots
          in: query
          description: The screenshot file names
          required: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: The screenshot files content
          content:
            application/json:
              schema:
                type: string
                format: binary
        '500':
          description: Unable to export screenshot files (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/screenshots/batch-delete:
    post:
      tags:
        - Screenshots
      summary: Deletes the screenshot files
      description: ''
      operationId: BatchDeleteScreenshots
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: string
          application/json:
            schema:
              type: array
              items:
                type: string
          text/json:
            schema:
              type: array
              items:
                type: string
          application/*+json:
            schema:
              type: array
              items:
                type: string
      responses:
        '204':
          description: The files were deleted
        '400':
          description: >-
            An error occurred while removing screenshot files (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/service-software-api/doorstate:
    post:
      tags:
        - ServiceSoftwareApi
      summary: Subscribe to the door state change
      description: ''
      operationId: PostDoorState
      requestBody:
        content:
          application/json-patch+json:
            schema: {}
          application/json:
            schema: {}
          text/json:
            schema: {}
          application/*+json:
            schema: {}
      responses:
        '200':
          description: Successfully subscribed to the door state change event
    get:
      tags:
        - ServiceSoftwareApi
      summary: Get the current state of the door
      description: ''
      operationId: GetDoorState
      parameters:
        - name: echo
          in: query
          schema:
            type: string
      responses:
        '200':
          description: The state of the door
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentResult'
  /api/v1/service-software-api/powerdown:
    post:
      tags:
        - ServiceSoftwareApi
      summary: Power down the instrument
      description: ''
      operationId: PostPowerDown
      requestBody:
        content:
          application/json-patch+json:
            schema: {}
          application/json:
            schema: {}
          text/json:
            schema: {}
          application/*+json:
            schema: {}
      responses:
        '200':
          description: Success
    get:
      tags:
        - ServiceSoftwareApi
      summary: Get the status on the power
      description: ''
      operationId: GetPowerDown
      parameters:
        - name: echo
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
  /api/v1/service-software-api/fanstate:
    post:
      tags:
        - ServiceSoftwareApi
      summary: Subscribe to the fan state event
      description: ''
      operationId: PostFanEvent
      requestBody:
        content:
          application/json-patch+json:
            schema: {}
          application/json:
            schema: {}
          text/json:
            schema: {}
          application/*+json:
            schema: {}
      responses:
        '200':
          description: Success
    get:
      tags:
        - ServiceSoftwareApi
      parameters:
        - name: echo
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
  /api/v1/service-software-api/sensor-status:
    get:
      tags:
        - ServiceSoftwareApi
      summary: Get the sensor status
      description: ''
      operationId: GetSensorStatus
      responses:
        '200':
          description: The sensor state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SensorStatesDto'
  /api/v1/service-software-api/is-parked:
    get:
      tags:
        - ServiceSoftwareApi
      summary: Get the instrument parked state
      description: ''
      operationId: GetIsParked
      responses:
        '200':
          description: The instrument parked state
          content:
            application/json:
              schema:
                type: boolean
  /api/v1/service-software-api/has-tips:
    get:
      tags:
        - ServiceSoftwareApi
      summary: Get tip status for instrument channels.
      description: Returns true is any channel has a tip attached.
      operationId: HasTips
      responses:
        '200':
          description: Channel tip status
          content:
            application/json:
              schema:
                type: boolean
  /api/v1/settings/{categoryId}/{settingId}:
    get:
      tags:
        - Settings
      summary: Get a setting value by category and setting id
      description: ''
      operationId: GetSetting
      parameters:
        - name: categoryId
          in: path
          required: true
          schema:
            type: string
        - name: settingId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Setting'
        '400':
          description: Failed to get the setting (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings:
    put:
      tags:
        - Settings
      summary: Update the value of a setting
      description: ''
      operationId: UpdateSetting
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SettingUpdateDto'
      responses:
        '202':
          description: The update of setting was successful
        '400':
          description: >-
            An error occcurred while updating the setting value (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/software-settings:
    get:
      tags:
        - Settings
      summary: Get the software specific settings
      description: ''
      operationId: GetSoftwareSettings
      responses:
        '200':
          description: The software settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoftwareSettingsDto'
        '400':
          description: >-
            An error occcurred while getting the software settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Update the software specific settings
      description: ''
      operationId: UpdateSoftwareSettings
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/SoftwareSettingsDto'
          application/json:
            schema:
              $ref: '#/components/schemas/SoftwareSettingsDto'
          text/json:
            schema:
              $ref: '#/components/schemas/SoftwareSettingsDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/SoftwareSettingsDto'
      responses:
        '200':
          description: The software settings were updated successfully
        '400':
          description: >-
            An error occcurred while updating the software settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/policy-settings:
    get:
      tags:
        - Settings
      summary: Get the policy specific settings
      description: ''
      operationId: GetPolicySettings
      responses:
        '200':
          description: The policy settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicySettingsDto'
        '400':
          description: >-
            An error occcurred while getting the policy settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Update the policy specific settings
      description: ''
      operationId: UpdatePolicySettings
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PolicySettingsDto'
          application/json:
            schema:
              $ref: '#/components/schemas/PolicySettingsDto'
          text/json:
            schema:
              $ref: '#/components/schemas/PolicySettingsDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/PolicySettingsDto'
      responses:
        '200':
          description: The policy settings were updated successfully
        '400':
          description: >-
            An error occcurred while updating the policy settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/instrument-settings:
    get:
      tags:
        - Settings
      summary: Get the instrument specific settings
      description: ''
      operationId: GetInstrumentSettings
      responses:
        '200':
          description: The instrument settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstrumentSettingsDto'
        '400':
          description: >-
            An error occcurred while getting the instrument settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Update the instrument specific settings
      description: ''
      operationId: UpdateInstrumentSettings
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/InstrumentSettingsDto'
          application/json:
            schema:
              $ref: '#/components/schemas/InstrumentSettingsDto'
          text/json:
            schema:
              $ref: '#/components/schemas/InstrumentSettingsDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/InstrumentSettingsDto'
      responses:
        '200':
          description: The instrument settings were updated successfully
        '400':
          description: >-
            An error occcurred while updating the instrument settings (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/has-setup-wizard-run:
    get:
      tags:
        - Settings
      summary: Check if the setup wizard ran successfully
      description: ''
      operationId: GetHasSetupWizardRun
      responses:
        '200':
          description: The status of the setup wizard
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Update the status of the setup wizard
      description: ''
      operationId: UpdateHasSetupWizardRun
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: boolean
          application/json:
            schema:
              type: boolean
          text/json:
            schema:
              type: boolean
          application/*+json:
            schema:
              type: boolean
      responses:
        '204':
          description: The status of the setup wizard was updated successfully
  /api/v1/settings/enable-user-management:
    get:
      tags:
        - Settings
      summary: Check if user management is enabled
      description: ''
      operationId: GetEnableUserManagement
      responses:
        '200':
          description: The status of the user management
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Enable or disable user management
      description: ''
      operationId: UpdateEnableUserManagement
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: boolean
          application/json:
            schema:
              type: boolean
          text/json:
            schema:
              type: boolean
          application/*+json:
            schema:
              type: boolean
      responses:
        '204':
          description: The status of the user management was updated successfully
  /api/v1/settings/must-restore-labware:
    get:
      tags:
        - Settings
      summary: Check if labware needs to be restored
      description: ''
      operationId: GetMustRestoreLabware
      responses:
        '200':
          description: The status of the labware restoration
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/must-restore-verify-protocols:
    get:
      tags:
        - Settings
      summary: Check if protocols need to be re-verified
      description: ''
      operationId: GetMustRestoreVerifyProtocols
      responses:
        '200':
          description: The status of the protocol verification restoration
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/must-update-maintenance-routines:
    get:
      tags:
        - Settings
      summary: Check if any new maintenance routines must be updated
      description: ''
      operationId: GetMustUpdateMaintenanceRoutines
      responses:
        '200':
          description: The status of updating any new maintenance routines
          content:
            application/json:
              schema:
                type: string
  /api/v1/settings/is-service-contract-enabled:
    get:
      tags:
        - Settings
      summary: >-
        Check if a verification service contract has been enabled by a service
        person.
      description: ''
      operationId: GetIsServiceContractEnabled
      responses:
        '200':
          description: The enabled status of the verification service contract
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Settings
      summary: Update the enabled status of verification service contract
      description: ''
      operationId: UpdateIsServiceContractEnabled
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: boolean
          application/json:
            schema:
              type: boolean
          text/json:
            schema:
              type: boolean
          application/*+json:
            schema:
              type: boolean
      responses:
        '204':
          description: The enabled status of the service contract was updated successfully
  /api/v1/settings/verification-global-importance:
    get:
      tags:
        - Settings
      summary: Get the verification global importance level
      description: ''
      operationId: GetVerificationGlobalImportance
      responses:
        '200':
          description: The current verification global importance level
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationImportanceDto'
    post:
      tags:
        - Settings
      summary: Update the verification global importance level
      description: ''
      operationId: UpdateVerificationGlobalImportance
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: integer
              format: int32
          application/json:
            schema:
              type: integer
              format: int32
          text/json:
            schema:
              type: integer
              format: int32
          application/*+json:
            schema:
              type: integer
              format: int32
      responses:
        '204':
          description: The verification global importance level was updated successfully
  /api/v1/software-versions:
    get:
      tags:
        - SoftwareVersions
      summary: Get the software versions
      description: ''
      operationId: GetSoftwareVersions
      responses:
        '200':
          description: The software versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoftwareVersion'
  /api/v1/software-versions/instrument:
    get:
      tags:
        - SoftwareVersions
      summary: Get the instrument versions
      description: ''
      operationId: GetInstrumentVersions
      responses:
        '200':
          description: The instrument versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoftwareVersion'
        '400':
          description: An error occurred while getting the instrument versions
          content:
            application/json:
              schema:
                type: string
  /api/v1/software-versions/instinct-api:
    get:
      tags:
        - SoftwareVersions
      summary: Check if the instinct API is running
      description: ''
      operationId: IsInstinctApiRunning
      responses:
        '200':
          description: The status of the instinct API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstinctApiResponseDto'
        '400':
          description: An error occurred while getting the status of the instinct API
          content:
            application/json:
              schema:
                type: string
  /api/v1/software-versions/service-software:
    get:
      tags:
        - SoftwareVersions
      summary: Check if the service software is running
      description: ''
      operationId: IsServiceSoftwareRunning
      responses:
        '200':
          description: The status of the service software
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MLPrepServiceSoftwareApiResponseDto'
        '400':
          description: An error occurred while getting the status of the service software
          content:
            application/json:
              schema:
                type: string
  /api/v1/system-ready:
    get:
      tags:
        - SystemReady
      summary: Check if the system is ready
      description: ''
      operationId: SystemReady
      responses:
        '200':
          description: The system ready object
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ISystemReadyState'
            application/json:
              schema:
                $ref: '#/components/schemas/ISystemReadyState'
            text/json:
              schema:
                $ref: '#/components/schemas/ISystemReadyState'
            application/xml:
              schema:
                $ref: '#/components/schemas/ISystemReadyState'
            text/xml:
              schema:
                $ref: '#/components/schemas/ISystemReadyState'
  /api/v1/system-time:
    get:
      tags:
        - SystemTime
      summary: Get the current system time
      description: ''
      operationId: GetCurrentTimeData
      responses:
        '200':
          description: The system time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MlPrepTimeGetData'
    put:
      tags:
        - SystemTime
      summary: Update the system time
      description: ''
      operationId: Put
      parameters:
        - name: id
          in: query
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeSetDto'
            example:
              year: 2020
              month: 10
              day: 22
              hours: 14
              minutes: 31
              seconds: 7
              timeZoneId: UTC-11
      responses:
        '200':
          description: The system time was updated
  /api/v1/system-time/time-zones:
    get:
      tags:
        - SystemTime
      summary: Get the time zones
      description: ''
      operationId: GetTimeZones
      responses:
        '200':
          description: The time zones
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SystemTimeZoneDto'
              example:
                - utcOffsetHours: -12
                  utcOffsetMinutes: 0
                  displayName: (UTC-12:00) International Date Line West
                  id: Dateline Standard Time
                  supportsDst: false
                - utcOffsetHours: -11
                  utcOffsetMinutes: 0
                  displayName: (UTC-11:00) Coordinated Universal Time-11
                  id: UTC-11
                  supportsDst: false
                - utcOffsetHours: -10
                  utcOffsetMinutes: 0
                  displayName: (UTC-10:00) Aleutian Islands
                  id: Aleutian Standard Time
                  supportsDst: false
  /api/v1/system-time/min-system-time:
    get:
      tags:
        - SystemTime
      summary: Get minimum allowable the system time
      description: ''
      operationId: GetMinSystemTime
      responses:
        '200':
          description: The minimum allowable time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeGetDto'
              example:
                year: 2020
                month: 10
                day: 22
                dayOfWeek: Thursday
                hours: 14
                minutes: 31
                seconds: 7
  /api/v1/system-time/max-system-time:
    get:
      tags:
        - SystemTime
      summary: Get maximum allowable the system time
      description: ''
      operationId: GetMaxSystemTime
      responses:
        '200':
          description: The maximum allowable time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeGetDto'
              example:
                year: 2020
                month: 10
                day: 22
                dayOfWeek: Thursday
                hours: 14
                minutes: 31
                seconds: 7
  /api/v1/thermal-device/hhc/configuration:
    get:
      tags:
        - ThermalDevice
      summary: Gets the current HHC Configuration
      description: ''
      operationId: GetHhcConfiguration
      responses:
        '200':
          description: The current HHC Configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HhcConfigurationGetDto'
        '400':
          description: Could not get the HHC Configuration
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - ThermalDevice
      summary: Sets the current HHC Configuration
      description: ''
      operationId: SetHhcConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HhcConfigurationPutDto'
      responses:
        '200':
          description: Sets he current HHC Configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HhcConfigurationPutDto'
        '400':
          description: Could not set the HHC Configuration
          content:
            application/json:
              schema:
                type: string
  /api/v1/thermal-device/hhc/temperature-status:
    get:
      tags:
        - ThermalDevice
      summary: Get the current temperature and target temperature from the HHC
      description: Queries the HHC to retrieve the current and target temperatures
      operationId: GetTemperatureStatus
      responses:
        '200':
          description: The current and target temperatures
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HhcTemperatureStatusDto'
        '400':
          description: Could not get temperature status
          content:
            application/json:
              schema:
                type: string
  /api/v1/thermal-device/hhc/start-temperature-control:
    put:
      tags:
        - ThermalDevice
      summary: Start controlling the temperature on the hhc
      description: Turns on temperature control on the hhc
      operationId: StartTemperatureControl
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: integer
              format: int32
          application/json:
            schema:
              type: integer
              format: int32
          text/json:
            schema:
              type: integer
              format: int32
          application/*+json:
            schema:
              type: integer
              format: int32
      responses:
        '200':
          description: Temperature control started
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Could not start temperature control
          content:
            application/json:
              schema:
                type: string
  /api/v1/thermal-device/hhc/stop-temperature-control:
    put:
      tags:
        - ThermalDevice
      summary: Stop controlling the temperature on the hhc
      description: Turns off temperature control on the hhc
      operationId: StopTemperatureControl
      responses:
        '200':
          description: Temperature control stopped
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Could not stop temperature control
          content:
            application/json:
              schema:
                type: string
  /api/v1/traces:
    get:
      tags:
        - Traces
      summary: Gets Instinct traces
      description: " Note that sources come from the GetSources method below and are case sensitive.\r\nFor example, to retrieve the first 1,000 traces (the limit per call) starting from the beginning for sources\r\nANE and SYE, the call looks like this:\r\nlocalhost:4601/api/traces?offset=0&amp;limit=1000&amp;sources=ANE,SYE"
      operationId: GetTraces
      parameters:
        - name: offset
          in: query
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          schema:
            type: integer
            format: int32
        - name: sources
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          description: "Optional start time. Send in the following format using local time of the server PC, it will be converted to UTC \r\nwhen sending to Instinct: 2020-02-24 03:55 PM which is February 24, 2020 at 3:55 PM. \r\nWhen sent to Instinct this date will become 2020-02-24T23:55:00"
          schema:
            type: string
            format: date-time
        - name: endTime
          in: query
          description: Optional end time. Same format as start time.
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: The traces
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstinctTraces'
        '400':
          description: An error occurred while getting the traces
          content:
            application/json:
              schema:
                type: string
  /api/v1/traces/export:
    get:
      tags:
        - Traces
      summary: Exports all traces for a given time interval (also includes diagnostics)
      description: ''
      operationId: ExportTraces
      parameters:
        - name: startTime
          in: query
          schema:
            type: string
            format: date-time
        - name: endTime
          in: query
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: The export file
          content:
            application/json:
              schema:
                type: string
                format: binary
  /api/v1/traces/sources:
    get:
      tags:
        - Traces
      summary: Get sources of the traces
      description: ''
      operationId: GetSources
      responses:
        '200':
          description: An error occurred while getting the trace sources
          content:
            application/json:
              schema:
                type: string
  /api/v1/user-kba:
    post:
      tags:
        - UserKba
      summary: Create new Knowledge Based Authentication items
      description: ''
      operationId: CreateKbaItems
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserKbaItem'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserKbaItem'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserKbaItem'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserKbaItem'
      responses:
        '200':
          description: The KBA items were created successfully
        '400':
          description: An error occurred while creating the KBA items
          content:
            application/json:
              schema:
                type: string
  /api/v1/user-kba/{userName}:
    get:
      tags:
        - UserKba
      summary: Get KBA Items in the database assigned to the requested user
      description: ''
      operationId: GetKbaItems
      parameters:
        - name: userName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The KBA items for the given user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/KbaDto'
        '400':
          description: An error occurred while creating the KBA items
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
        - UserKba
      summary: Deletes all KBA Items in the database assigned to the requested user
      description: ''
      operationId: DeleteKbaItems
      parameters:
        - name: userName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The KBA items for the given user were deleted successfully
  /api/v1/user-kba/validate-kba-answer:
    post:
      tags:
        - UserKba
      summary: Validates a Knowledge Based Authentication item answer
      description: ''
      operationId: ValidateKbaAnswer
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/KbaValidationDto'
          application/json:
            schema:
              $ref: '#/components/schemas/KbaValidationDto'
          text/json:
            schema:
              $ref: '#/components/schemas/KbaValidationDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/KbaValidationDto'
      responses:
        '200':
          description: Whether or not the answers are valid
          content:
            application/json:
              schema:
                type: boolean
        '400':
          description: An error occurred while validating the KBA answer
          content:
            application/json:
              schema:
                type: string
  /api/v1/users:
    get:
      tags:
        - Users
      summary: Get all users
      description: ''
      operationId: GetUsers
      responses:
        '200':
          description: The users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDto'
        '400':
          description: >-
            An error occurred while getting the users (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
    post:
      tags:
        - Users
      summary: Create a new user
      description: ''
      operationId: CreateUser
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/UserCreateDto'
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreateDto'
          text/json:
            schema:
              $ref: '#/components/schemas/UserCreateDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UserCreateDto'
      responses:
        '200':
          description: The user was created successfully
        '400':
          description: >-
            An error occurred while creating the user (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/{id}:
    get:
      tags:
        - Users
      summary: Get a specific user by id
      description: ''
      operationId: GetUser
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDto'
        '400':
          description: >-
            An error occurred while getting the user (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
    patch:
      tags:
        - Users
      summary: Update a users info
      description: ''
      operationId: UpdateUser
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
      responses:
        '200':
          description: The user was updated successfully
        '400':
          description: >-
            An error occurred while updating the user (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
        - Users
      summary: Delete a user
      description: ''
      operationId: DeleteUser
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The user was deleted successfully
        '400':
          description: >-
            An error occurred while deleting the user (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/disable-user-management:
    get:
      tags:
        - Users
      summary: Disable user management
      description: ''
      operationId: DisableUserManagement
      responses:
        '200':
          description: The user management was disabled successfully
        '400':
          description: >-
            An error occurred while disabling the user management (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/enable-user-management:
    post:
      tags:
        - Users
      summary: Enable user management
      description: ''
      operationId: EnableUserManagement
      responses:
        '200':
          description: The user management was enabled successfully
        '400':
          description: >-
            An error occurred while enabling the user management (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/set-user-account-policy-defaults:
    put:
      tags:
        - Users
      summary: Set account policy back to the defaults
      description: ''
      operationId: SetAccountPolicyDefaults
      responses:
        '200':
          description: The account policy was reset back to its default values successfully
        '400':
          description: >-
            An error occurred while setting the account policy (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/admin-update-users-password:
    post:
      tags:
        - Users
      summary: Allows an admin to update a given user's password
      description: ''
      operationId: AdminUpdateUsersPassword
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          text/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
      responses:
        '200':
          description: The user's password was updated successfully
        '400':
          description: >-
            An error occurred while updating the user's password (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/users/user-update-own-password:
    post:
      tags:
        - Users
      summary: Allows an user to update own password
      description: ''
      operationId: UserUpdateOwnPassword
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          text/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordDto'
      responses:
        '200':
          description: The user's own password was updated successfully
        '400':
          description: >-
            An error occurred while updating the user's password (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/authenticate:
    post:
      tags:
        - Verification
      summary: Authenticate the service password
      description: ''
      operationId: AuthenticatePassword
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VerificationAuthenticateDto'
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationAuthenticateDto'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificationAuthenticateDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificationAuthenticateDto'
      responses:
        '200':
          description: The service password is correct
          content:
            application/json:
              schema:
                type: string
        '400':
          description: The service password is incorrect
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/service-routines:
    get:
      tags:
        - Verification
      summary: Retrieves the list of service routines.
      description: ''
      operationId: GetServiceRoutines
      responses:
        '200':
          description: The list of service routines
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ServiceRoutineDto'
        '400':
          description: >-
            An error occurred while retrieving the service routines (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - Verification
      summary: Update a service routines.
      description: ''
      operationId: UpdateServiceRoutine
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ServiceRoutineDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceRoutineDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ServiceRoutineDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ServiceRoutineDto'
      responses:
        '200':
          description: Service routine was updated
        '400':
          description: >-
            An error occurred while updating the service routine (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/service-routines/{id}:
    get:
      tags:
        - Verification
      summary: Retrieves specified service routine
      description: ''
      operationId: GetServiceRoutine
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Serviceroutine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceRoutineDto'
        '400':
          description: >-
            An error occurred while retrieving the service routines (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
        '404':
          description: A service routine could not be found with the id specified
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/workflow/service-routine-run/{index}:
    put:
      tags:
        - Verification
      summary: Update a service routines in the current workflow
      description: ''
      operationId: CompleteServiceRoutineRun
      parameters:
        - name: index
          in: path
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/RoutineRunDto'
          application/json:
            schema:
              $ref: '#/components/schemas/RoutineRunDto'
          text/json:
            schema:
              $ref: '#/components/schemas/RoutineRunDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RoutineRunDto'
      responses:
        '200':
          description: Service routine run was updated
        '400':
          description: >-
            An error occurred while updating the service routine run (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/workflow/routine-run/{index}:
    get:
      tags:
        - Verification
      summary: Get a routine run in the current workflow
      description: ''
      operationId: GetRoutineRun
      parameters:
        - name: index
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Routine run
        '400':
          description: >-
            An error occurred while retrieving routine run (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/service-routines/{serviceRoutineId}:
    post:
      tags:
        - Verification
      summary: Starts a service routine
      description: ''
      operationId: StartServiceRoutine
      parameters:
        - name: serviceRoutineId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The service routine was successfully started
        '400':
          description: >-
            An error occurred starting the service routine (see error message
            for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/routines:
    get:
      tags:
        - Verification
      summary: Retrieves the list of verification routines for the current instrument
      description: ''
      operationId: GetVerificationRoutines
      responses:
        '200':
          description: The list of verification routines
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VerificationRoutineDto'
        '400':
          description: >-
            An error occurred while retrieving the verification routines (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/routines/{routineId}:
    get:
      tags:
        - Verification
      summary: >-
        Retrieves the verification routine corresponding to the supplied routine
        ID for the current instrument
      description: ''
      operationId: GetVerificationRoutine
      parameters:
        - name: routineId
          in: path
          description: The database id of the verification
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The verification routine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationRoutineDto'
        '400':
          description: >-
            An error occurred while retrieving the verification routine (see
            error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/runs:
    get:
      tags:
        - Verification
      summary: Get all verification runs
      description: ''
      operationId: GetVerificationRuns
      responses:
        '200':
          description: The list of verification runs
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VerificationRoutineDto'
        '400':
          description: Failed to get the verification runs (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/routines/initialize:
    post:
      tags:
        - Verification
      summary: Initializes all verification routine due date values to now
      description: This should be used when verification is first initialized
      operationId: InitializeVerification
      responses:
        '200':
          description: Initialize successfully completed
        '400':
          description: Initialize was unsuccessful (see error message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/status:
    get:
      tags:
        - Verification
      summary: Get the current verification run/workflow status
      description: ''
      operationId: GetVerificationStatus
      responses:
        '200':
          description: The active verification run/workflow status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationStatusDto'
        '400':
          description: >-
            Failed to get the current run/workflow status (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/signature:
    post:
      tags:
        - Verification
      summary: Post digital signature to workflow
      description: ''
      operationId: PostDigitalSignature
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DigitalSignatureInfoDto'
          application/json:
            schema:
              $ref: '#/components/schemas/DigitalSignatureInfoDto'
          text/json:
            schema:
              $ref: '#/components/schemas/DigitalSignatureInfoDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DigitalSignatureInfoDto'
      responses:
        '200':
          description: The digital signature was added successfully
        '400':
          description: An error occurred posting digital signature
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/signature/clear:
    post:
      tags:
        - Verification
      summary: Post clear digital signature from workflow
      description: ''
      operationId: PostClearDigitalSignature
      responses:
        '200':
          description: The digital signature was added successfully
        '400':
          description: An error occurred posting digital signature
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/workflow:
    post:
      tags:
        - Verification
      summary: Creates a verification workflow
      description: ''
      operationId: CreateWorkflow
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CreateVerificationWorkflowDto'
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVerificationWorkflowDto'
          text/json:
            schema:
              $ref: '#/components/schemas/CreateVerificationWorkflowDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreateVerificationWorkflowDto'
      responses:
        '200':
          description: The workflow was created successfully
        '400':
          description: >-
            An error occurred starting the verifications (see error message for
            details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification/next:
    put:
      tags:
        - Verification
      summary: Proceed to the next screen step of the run/workflow
      description: ''
      operationId: Next
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          text/json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
          application/*+json:
            schema:
              $ref: '#/components/schemas/ViewClosePostDto'
            example:
              viewId: 5854c6bfedba41cba94560861b0075d8
              viewResult: Ok
              viewInput: ViewInput1;ViewInput2
      responses:
        '200':
          description: Verification run/workflow was successfully continued.
  /api/v1/verification/re-run:
    put:
      tags:
        - Verification
      summary: Rerun the most recently completed routine run
      description: ''
      operationId: ReRun
      responses:
        '200':
          description: Verification re-run was successfully started.
  /api/v1/verification/workflow/requeue/{indexToRequeue}:
    post:
      tags:
        - Verification
      summary: Requeue a routine with the specified index
      description: ''
      operationId: Requeue
      parameters:
        - name: indexToRequeue
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Verification was successfully requeued.
  /api/v1/verification/abort:
    put:
      tags:
        - Verification
      summary: Abort the current verification run/workflow
      description: ''
      operationId: AbortVerification
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AbortVerificationWorkflowDto'
          application/json:
            schema:
              $ref: '#/components/schemas/AbortVerificationWorkflowDto'
          text/json:
            schema:
              $ref: '#/components/schemas/AbortVerificationWorkflowDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AbortVerificationWorkflowDto'
      responses:
        '200':
          description: Verification run/workflow was aborted successfully
  /api/v1/verification/workflow/camera:
    put:
      tags:
        - Verification
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VerificationDataCamera'
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationDataCamera'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificationDataCamera'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificationDataCamera'
      responses:
        '200':
          description: Success
  /api/v1/verification/workflow/barcode:
    put:
      tags:
        - Verification
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VerificationDataBarcode'
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationDataBarcode'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificationDataBarcode'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificationDataBarcode'
      responses:
        '200':
          description: Success
  /api/v1/verification/configuration:
    get:
      tags:
        - Verification
      summary: Retrieves the verification configuration settings.
      description: ''
      operationId: GetConfiguration
      responses:
        '200':
          description: The service configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationConfigurationDto'
        '400':
          description: >-
            An error occurred while getting the service configuration (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
    put:
      tags:
        - Verification
      summary: Updates the verification configuration.
      description: ''
      operationId: UpdateConfiguration
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VerificationConfigurationDto'
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationConfigurationDto'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificationConfigurationDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificationConfigurationDto'
      responses:
        '200':
          description: Service configuration was updated succefully.
        '400':
          description: >-
            An error occurred while updating the service configuration(see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification-result:
    post:
      tags:
        - VerificationResult
      summary: Create verification items
      description: ''
      operationId: CreateOrUpdateVerificationResultItem
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VerificationResult'
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationResult'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificationResult'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificationResult'
      responses:
        '200':
          description: The verification item was created successfully
        '400':
          description: >-
            An error occurred while creating the verification item (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification-result/get-all-items:
    get:
      tags:
        - VerificationResult
      summary: Get all verification items from the database
      description: ''
      operationId: GetAllVerificationItems
      responses:
        '200':
          description: The verification items
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VerificationResultDto'
        '400':
          description: >-
            An error occurred while getting the verification items (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
  /api/v1/verification-result/get-item/{itemName}:
    get:
      tags:
        - VerificationResult
      summary: Get a named verification item from the database
      description: ''
      operationId: GetVerificationItem
      parameters:
        - name: itemName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The verification item
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResultDto'
        '400':
          description: >-
            An error occurred while getting the verification item (see error
            message for details)
          content:
            application/json:
              schema:
                type: string
components:
  schemas:
    AbortVerificationWorkflowDto:
      type: object
      properties:
        cancelAllRemaining:
          type: boolean
          description: Whether to cancel all remaining verifications in the run
      additionalProperties: false
      description: The abort verification run request object
    ActiveSystemGetDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the system
          nullable: true
        description:
          type: string
          description: The description of the system
          nullable: true
        instrumentName:
          type: string
          description: The instrument name associated with the system
          nullable: true
        workspaceName:
          type: string
          description: The workspace name for the system
          nullable: true
        isConnected:
          type: boolean
          description: Whether or not the instrument is connected
        isConnecting:
          type: boolean
          description: Whether or not the instrument is connecting
        connectedInstrumentName:
          type: string
          description: The connected instrument name associated with the system
          nullable: true
      additionalProperties: false
      description: The object that holds information about the current active system
    AddReagentStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        channelSelection:
          type: string
          description: >-
            The channels used to perform the add reagent step. Possible values
            are OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareGroupId:
          type: integer
          description: The labware group for the tips to use
          format: int32
        tipLabwareDisplayName:
          type: string
          description: The tip labware name used for displaying
          nullable: true
        liquidLabwareGroupId:
          type: integer
          description: The labware group for the reagent liquid
          format: int32
        newTipsEachTransfer:
          type: boolean
          description: >-
            Whether or not new tips should be used for each aspirate-dispense
            sequence
        mixBeforeAspirate:
          type: boolean
          description: >-
            Enabling or disabling mixing before the aspirate (mixing in the
            reagent location)
        mixAfterDispense:
          type: boolean
          description: >-
            Enabling or disabling mixing after the dispense (mixing in the
            destination location)
        multiDispense:
          type: boolean
          description: Enabling or disabling multi-dispense (aliquots)
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        multiDispenseSettings:
          $ref: '#/components/schemas/MultiDispenseSettingsDto'
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        destinations:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The destinations where the reagent will be dispensed to
          nullable: true
        customizeLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
      additionalProperties: false
    Address:
      type: object
      properties:
        row:
          type: integer
          format: int32
        column:
          type: integer
          format: int32
      additionalProperties: false
    AddressDto:
      required:
        - column
        - row
      type: object
      properties:
        row:
          maximum: 16
          minimum: 1
          type: integer
          description: The row in the labware [1-16]
          format: int32
        column:
          maximum: 24
          minimum: 1
          type: integer
          description: The column in the labware [1-24]
          format: int32
      additionalProperties: false
      description: The address of a labware in row/column format
    AliquotSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id
          format: int32
        volume:
          type: number
          description: The ammount of volume to use for pre/post aliquot, in μL
          format: double
        pipettingHeight:
          type: number
          description: The height in mm where the pre/post aliquot should occur
          format: double
        pipettingHeightStartPoint:
          type: string
          description: >-
            The starting point of the tip for the pre/post aliquot. Available
            options are FromLiquidLevel, or FromContainerBottom
          nullable: true
        sampleDiscardLocation:
          type: string
          description: >-
            The location where the post aliquot volume should be dispensed to.
            Available options are Source, or Waste
          nullable: true
      additionalProperties: false
    AspirateSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id for the settings
          format: int32
        transferVolume:
          type: number
          description: The amount of volume getting aspirated in μL
          format: double
        pipettingHeight:
          type: number
          description: "The height at which to aspirate in mm. If the pipettingHeightStartPoint is set to FromLiquidLevel, this parameter will\r\nbe in mm below the liquid surface. If the pipettingHeightStartPoint is set to FromContainerBottom, this will be in mm from the bottom of the container."
          format: double
        retractToWellTop:
          type: boolean
          description: Option to retract to the well top (overrides retract distance)
        retractDistance:
          type: number
          description: How far to retract before aspirating air for transport
          format: double
        pipettingHeightStartPoint:
          type: string
          description: >-
            The position from which to measure the pipetting height from,
            options are FromLiquidLevel or FromContainerBottom
          nullable: true
        mixVolume:
          type: number
          description: The amount of volume used during the mixing process in μL
          format: double
        mixCycles:
          type: integer
          description: The number of cycles to mix for
          format: int32
        mixSpeed:
          type: integer
          description: The speed at which to mix
          format: int32
        mixHeight:
          type: number
          description: "The height at which to mix in mm. If the mixHeightStartPoint is set to FromLiquidLevel, this parameter will\r\nbe in mm below the liquid surface. If the mixHeightStartPoint is set to FromContainerBottom, this will be in mm from the bottom of the container."
          format: double
        enableMad:
          type: boolean
          description: Option to enable MAD
        followLiquid:
          type: boolean
          description: Option for following the liquid height as it's being aspirated
        mixHeightStartPoint:
          type: string
          description: >-
            The position from which to measure the mixing height from, options
            are FromLiquidLevel or FromContainerBottom
          nullable: true
        offset:
          $ref: '#/components/schemas/OffsetDto'
        useOffset:
          type: boolean
          description: Option to enable aspirate offset
      additionalProperties: false
    AssemblyPartDto:
      type: object
      properties:
        indexInStackOfParts:
          type: integer
          description: >-
            The index for this part in the stack of parts that make up the
            assembly
          format: int32
        wellMap:
          type: object
          additionalProperties:
            type: array
            items:
              type: integer
              format: int32
          description: >-
            The map from Instinct's well numbers to a row and column number
            (used for multi-layer plates)
          nullable: true
        disabledWells:
          type: array
          items:
            type: array
            items:
              type: integer
              format: int32
          description: >-
            The list of rows and columns of disabled wells (used for multi-layer
            plates)
          nullable: true
        id:
          type: integer
          description: The database id
          format: int32
          readOnly: true
        name:
          type: string
          description: The labware reference name
          nullable: true
          readOnly: true
        containerName:
          type: string
          description: >-
            The labware reference name for the container if applicable (for
            troughs and tube racks)
          nullable: true
          readOnly: true
        rows:
          type: integer
          description: The number of rows
          format: int32
        columns:
          type: integer
          description: The number of columns
          format: int32
        volume:
          type: number
          description: A volume value for the labware
          format: double
        displayName:
          type: string
          description: The display name
          nullable: true
        partNumbers:
          type: string
          description: The part number(s) for the labware
          nullable: true
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LabwareCategoryDto'
          description: The categories assigned to the labware
          nullable: true
        classification:
          type: string
          description: "The classificaton it is part of. Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Lid, Assembly, LidCarrier"
          nullable: true
        siteAlignments:
          type: array
          items:
            type: string
          description: The site alignment names
          nullable: true
        isFavorite:
          type: boolean
          description: Whether or not the labware is a user favorite
        parts:
          type: array
          items:
            $ref: '#/components/schemas/AssemblyPartDto'
          description: >-
            The labware parts that make up the assembly (only applicable for
            assembly classification
          nullable: true
      additionalProperties: false
      description: The Labware object that is part of an assembly
    AssemblyPartSummaryDto:
      type: object
      properties:
        indexInStackOfParts:
          type: integer
          description: >-
            The index for this part in the stack of parts that make up the
            assembly
          format: int32
        wellMap:
          type: object
          additionalProperties:
            type: array
            items:
              type: integer
              format: int32
          description: >-
            The map from Instinct's well numbers to a row and column number
            (used for multi-layer plates)
          nullable: true
        disabledWells:
          type: array
          items:
            type: array
            items:
              type: integer
              format: int32
          description: >-
            The list of rows and columns of disabled wells (used for multi-layer
            plates)
          nullable: true
        id:
          type: integer
          description: The database id
          format: int32
          readOnly: true
        name:
          type: string
          description: The labware reference name
          nullable: true
          readOnly: true
        containerName:
          type: string
          description: >-
            The labware reference name for the container if applicable (for
            troughs and tube racks)
          nullable: true
          readOnly: true
        rows:
          type: integer
          description: The number of rows
          format: int32
        columns:
          type: integer
          description: The number of columns
          format: int32
        volume:
          type: number
          description: A volume value for the labware
          format: double
        displayName:
          type: string
          description: The display name
          nullable: true
        imageExtension:
          type: string
          description: The preview image file type (.png, .jpg, etc...)
          nullable: true
        imageData:
          type: string
          description: The preview image file data
          format: byte
          nullable: true
        partNumbers:
          type: string
          description: The part number(s) for the labware
          nullable: true
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LabwareCategoryDto'
          description: The categories assigned to the labware
          nullable: true
        classification:
          type: string
          description: "The classificaton it is part of. Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Assembly, Lid, LidCarrier"
          nullable: true
        siteAlignments:
          type: array
          items:
            type: string
          description: The site alignment names
          nullable: true
        isFavorite:
          type: boolean
          description: Whether or not the labware is a user favorite
        parts:
          type: array
          items:
            $ref: '#/components/schemas/AssemblyPartSummaryDto'
          description: >-
            The labware parts that make up the assembly (only applicable for
            assembly classification
          nullable: true
      additionalProperties: false
      description: The Labware object that is part of an assembly
    AuthenticatePostDto:
      type: object
      properties:
        username:
          type: string
          description: The username
          nullable: true
        password:
          type: string
          description: The password for the given user
          nullable: true
      additionalProperties: false
      description: The authentication request POST
    AuthenticateResponseDto:
      type: object
      properties:
        userName:
          type: string
          description: The username
          nullable: true
        userId:
          type: string
          description: The internal instinct user id
          nullable: true
        token:
          type: string
          description: The json web token
          nullable: true
        inactiveLogout:
          type: integer
          description: The amount of time the user is allowed to be inactive (in minutes)
          format: int32
        logoutCountdown:
          type: integer
          description: The logout countdown
          format: int32
        expiresIn:
          type: integer
          description: >-
            The amount of time the user has remaining until logged out (in
            minutes)
          format: int32
        passwordExpiresInDays:
          type: integer
          format: int32
        notifyPasswordExpiresSoon:
          type: boolean
      additionalProperties: false
      description: The authentication response
    BackupFileDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the backup file
          nullable: true
        createdDateTime:
          type: string
          description: The date it was created
          format: date-time
        size:
          type: integer
          description: The size of the document in bytes
          format: int64
      additionalProperties: false
      description: The backup file
    BarcodeStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        targets:
          type: array
          items:
            $ref: '#/components/schemas/BarcodeTargetDto'
          description: The barcode assignment for each position
          nullable: true
      additionalProperties: false
    BarcodeTargetDto:
      required:
        - deckPosition
      type: object
      properties:
        deckPosition:
          type: integer
          description: The deck position id (1 - 8)
          format: int32
        address:
          $ref: '#/components/schemas/Address'
        barcodeValue:
          type: string
          description: The barcode value
          nullable: true
      additionalProperties: false
      description: A barcode target which includes a value, deck position and address
    BatchDeleteLiquidDto:
      type: object
      properties:
        liquidNames:
          type: array
          items:
            type: string
          description: The liquids to be deleted
          nullable: true
        ignoreProtocolCheck:
          type: boolean
          description: Option to ignore verifying if the liquid is in use by a protocol
      additionalProperties: false
      description: An object for deleting many liquids in a batch process
    CalibrationCameraResultDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        status:
          type: string
          description: The status of the camera calibration, will either be Pass or Fail
          nullable: true
        message:
          type: string
          description: An error message if applicable
          nullable: true
        hasError:
          type: boolean
          description: Whether or not the calibration has errors
        calibrationDate:
          type: string
          description: The date the calibration was performed
          format: date-time
      additionalProperties: false
      description: The result of the camera calibration
    CalibrationChannelResultDto:
      type: object
      properties:
        status:
          type: string
          description: The status of the calibration, will either be Pass or Fail
          nullable: true
        message:
          type: string
          description: An error message if applicable
          nullable: true
        hasError:
          type: boolean
          description: Whether or not the calibration has errors
        channelSkew:
          $ref: '#/components/schemas/ChannelSkewDto'
        channelOffset:
          $ref: '#/components/schemas/ChannelOffsetDto'
        channelWarnings:
          type: array
          items:
            $ref: '#/components/schemas/ChannelWarningDto'
          description: Channel warnings from the calibration, if any exist.
          nullable: true
      additionalProperties: false
      description: The result of the channel calibration
    CalibrationChannelResultGetDto:
      type: object
      properties:
        id:
          type: integer
          description: The id for the calibration result
          format: int32
        calibrationDate:
          type: string
          description: The date the calibration was performed
          format: date-time
        status:
          type: string
          description: The status of the calibration, will either be Pass or Fail
          nullable: true
        message:
          type: string
          description: An error message if applicable
          nullable: true
        hasError:
          type: boolean
          description: Whether or not the calibration has errors
        channelSkew:
          $ref: '#/components/schemas/ChannelSkewDto'
        channelOffset:
          $ref: '#/components/schemas/ChannelOffsetDto'
        channelWarnings:
          type: array
          items:
            $ref: '#/components/schemas/ChannelWarningDto'
          description: Channel warnings from the calibration, if any exist.
          nullable: true
      additionalProperties: false
      description: The result of the channel calibration GET
    CameraCropDelta:
      type: object
      properties:
        yDelta:
          type: integer
          format: int32
        xDelta:
          type: integer
          format: int32
      additionalProperties: false
    CameraFocusBlockType:
      enum:
        - Upper
        - Lower
      type: integer
      format: int32
    CameraParameterDto:
      type: object
      properties:
        displayName:
          type: string
          description: The display name of a particular camera setting
          nullable: true
        value:
          type: string
          description: >-
            The value of the parameter, the type will vary based on the
            parameters
          nullable: true
      additionalProperties: false
      description: A camera parameter which is key/value pair
    CameraSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the setting
          format: int32
        name:
          type: string
          description: The name of the setting
          nullable: true
        displayName:
          type: string
          description: The display name
          nullable: true
        active:
          type: boolean
          description: Whether or not it's active
      additionalProperties: false
      description: The camera settings object
    ChangeExpiredPasswordDto:
      type: object
      properties:
        userName:
          type: string
          nullable: true
        oldPassword:
          type: string
          nullable: true
        newPassword:
          type: string
          nullable: true
      additionalProperties: false
    Channel:
      type: object
      properties:
        channelName:
          type: string
          nullable: true
        highDetected:
          type: boolean
        lowDetected:
          type: boolean
        blockDetected:
          type: boolean
        highPostion:
          type: number
          format: double
        lowPostion:
          type: number
          format: double
        blockPostion:
          type: number
          format: double
      additionalProperties: false
    ChannelAxisOffset:
      type: object
      properties:
        channelName:
          type: string
          nullable: true
        spec:
          type: number
          format: float
        xInitial:
          type: number
          format: float
        yInitial:
          type: number
          format: float
        zInitial:
          type: number
          format: float
        xNew:
          type: number
          format: float
        yNew:
          type: number
          format: float
        zNew:
          type: number
          format: float
        xDelta:
          type: number
          format: float
        yDelta:
          type: number
          format: float
        zDelta:
          type: number
          format: float
      additionalProperties: false
    ChannelCounterDto:
      type: object
      properties:
        name:
          type: string
          nullable: true
        tipPickUpCounter:
          type: integer
          format: int32
        tipEjectCounter:
          type: integer
          format: int32
        aspirateCounter:
          type: integer
          format: int32
        dispenseCounter:
          type: integer
          format: int32
      additionalProperties: false
    ChannelIndex:
      enum:
        - RearChannel
        - FrontChannel
        - MPH
        - All
        - InvalidIndex
      type: integer
      format: int32
    ChannelOffsetDto:
      type: object
      properties:
        mphOffsetX:
          type: number
          format: double
        independentOffsetX:
          type: number
          format: double
        yzAxisOffsets:
          type: array
          items:
            $ref: '#/components/schemas/ChannelYZOffsetDto'
          nullable: true
      additionalProperties: false
    ChannelSkewDto:
      type: object
      properties:
        mphSkewX:
          type: number
          format: double
        mphSkewZ:
          type: number
          format: double
        independentSkewX:
          type: number
          format: double
        independentSkewZ:
          type: number
          format: double
      additionalProperties: false
    ChannelWarningDto:
      type: object
      properties:
        name:
          type: string
          nullable: true
        currentValue:
          type: number
          format: double
        previousValue:
          type: number
          format: double
        delta:
          type: number
          format: double
      additionalProperties: false
    ChannelYZOffsetDto:
      type: object
      properties:
        index:
          $ref: '#/components/schemas/ChannelIndex'
        offsetY:
          type: number
          format: double
        offsetZ:
          type: number
          format: double
        offsetZValid:
          type: boolean
      additionalProperties: false
    ClientLogEntryDto:
      type: object
      properties:
        logEntry:
          type: string
          description: The log message
          nullable: true
        logType:
          type: string
          description: The type of log message
          nullable: true
        logTime:
          type: string
          description: The the time the message was logged
          nullable: true
      additionalProperties: false
      description: A client log entry
    ConnectionStatus:
      type: object
      properties:
        isControlled:
          type: boolean
        controllerMachineName:
          type: string
          nullable: true
        controllerUserName:
          type: string
          nullable: true
      additionalProperties: false
    ContentResult:
      type: object
      properties:
        content:
          type: string
          nullable: true
        contentType:
          type: string
          nullable: true
        statusCode:
          type: integer
          format: int32
          nullable: true
      additionalProperties: false
    CornerLocatorsRequirement:
      enum:
        - Removed
        - Installed
        - Either
        - Custom
      type: integer
      format: int32
    CorrectionPoint:
      type: object
      properties:
        target:
          type: number
          format: double
        value:
          type: number
          format: double
        isUserAdded:
          type: boolean
      additionalProperties: false
    CorsOriginDto:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the origin
          format: int32
        url:
          type: string
          description: The URL of the origin
          nullable: true
        canDelete:
          type: boolean
          description: Whether or not the origin can be deleted
      additionalProperties: false
      description: A CORS Origin
    CorsOriginPostDto:
      type: object
      properties:
        url:
          type: string
          description: The URL of the origin
          nullable: true
      additionalProperties: false
      description: A CORS Origin
    CreateVerificationWorkflowDto:
      type: object
      properties:
        verificationRoutineIds:
          type: array
          items:
            type: integer
            format: int32
          description: The verification routine IDs to run
          nullable: true
        firstName:
          type: string
          description: The operator's first name
          nullable: true
        lastName:
          type: string
          description: The operator's last name
          nullable: true
        location:
          type: string
          description: The verification location
          nullable: true
        reason:
          type: string
          description: The verification reason
          nullable: true
        temperature:
          type: number
          description: The current ambient temperature
          format: double
          nullable: true
        humidity:
          type: number
          description: The current ambient humidity
          format: double
          nullable: true
        verificationDevices:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDeviceDto'
          description: The list of required device calibration information
          nullable: true
      additionalProperties: false
      description: The create verification run request object
    CredentialDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        username:
          type: string
          nullable: true
        password:
          type: string
          nullable: true
        location:
          type: string
          nullable: true
        dateModified:
          type: string
          format: date-time
      additionalProperties: false
    DeckLayoutGetDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id of the deck layout object
          format: int32
        positions:
          type: array
          items:
            $ref: '#/components/schemas/DeckPositionGetDto'
          description: The list of positions defined for the deck, sorted by position id
          nullable: true
      additionalProperties: false
      description: The defined deck layout for a protocol
    DeckLayoutPostPutDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id
          format: int32
        positions:
          type: array
          items:
            $ref: '#/components/schemas/DeckPositionPostPutDto'
          description: The deck positions numbered from 1 to 8
          nullable: true
      additionalProperties: false
      description: The deck layout definition object for saving a deck
    DeckLightsSetting:
      enum:
        - AlwaysEnable
        - DisableAfterDeckVerification
        - DisablePriorToRun
        - AlwaysDisable
      type: integer
      format: int32
    DeckLightsSettingOptionsGetDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the deck lights setting option
          format: int32
        description:
          type: string
          description: The description of the deck lights setting option
          nullable: true
        displayName:
          type: string
          description: The display name of the deck lights setting option
          nullable: true
        name:
          type: string
          description: The name of the deck lights setting option
          nullable: true
      additionalProperties: false
      description: The object that holds the available deck lights setting options
    DeckLoadPositionDto:
      type: object
      properties:
        positionName:
          type: string
          description: The deck position name
          nullable: true
        deckPosition:
          type: integer
          description: The numbered deck position on the ML Prep
          format: int32
        labwarePosition:
          type: integer
          description: The position of the labware within a carrier
          format: int32
        labwareClassification:
          $ref: '#/components/schemas/LabwareClassification'
      additionalProperties: false
      description: Deck position information
    DeckPositionGetDto:
      type: object
      properties:
        labwarePositions:
          type: array
          items:
            $ref: '#/components/schemas/LabwarePositionGetDto'
          description: "The labware specific position. For most labware this will be an empty list. However,\r\nfor tube racks and/or trough carriers, the labware position represents each slot to put tubes or troughs in."
          nullable: true
        id:
          type: integer
          description: The database id of the deck position object
          format: int32
        labwareGroup:
          $ref: '#/components/schemas/LabwareGroupGetDto'
        position:
          type: integer
          description: The position id ranging from 1 to 8
          format: int32
        positionName:
          type: string
          description: The name of the position
          nullable: true
        liquidVolume:
          type: number
          description: The amount of liquid found in the position
          format: double
      additionalProperties: false
      description: The deck position object
    DeckPositionPostPutDto:
      required:
        - position
      type: object
      properties:
        position:
          type: integer
          description: The position id of the deck position
          format: int32
        labwarePositions:
          type: array
          items:
            $ref: '#/components/schemas/LabwarePositionPostPutDto'
          description: "The labware specific position. For most labware this will be an empty list. However,\r\nfor tube racks and/or trough carriers, the labware position represents each slot to put tubes or troughs in."
          nullable: true
        id:
          type: integer
          description: The database id of the deck position, required for updates
          format: int32
        positionName:
          type: string
          description: The name of the position
          nullable: true
        labwareGroup:
          $ref: '#/components/schemas/LabwareGroupPostPutDto'
        liquidVolume:
          type: number
          description: The liquid volume
          format: double
      additionalProperties: false
      description: "The deck position save or update object. The only difference between a DeckPosition and a LabwarePosition is that\r\na deck position has a Position and a LabwarePosition has a Row and  a Column so that carriers such as tube carriers can have proper addressing."
    DeckPositionPreviewDto:
      type: object
      properties:
        position:
          type: integer
          format: int32
        imagePath:
          type: string
          nullable: true
        isOccupied:
          type: boolean
      additionalProperties: false
    DeckPositionVerifyDto:
      type: object
      properties:
        position:
          type: integer
          description: The position id
          format: int32
        isOccupied:
          type: boolean
          description: Flag indicating if the position is occupied
        labwareName:
          type: string
          description: The name of the labware in the position
          nullable: true
        labwareDisplayName:
          type: string
          description: The display name of the labware
          nullable: true
        imagePath:
          type: string
          description: The path to the image file
          nullable: true
        labwareCategories:
          type: array
          items:
            type: string
          description: The set of labware categories, will be empty if isOccupied is false
          nullable: true
      additionalProperties: false
      description: The verification data for a deck position within a protocol
    DeckScanMatchResultDto:
      type: object
      properties:
        detectedLabwareId:
          type: integer
          description: The id of the top match detected at the position
          format: int32
        confidence:
          type: number
          description: >-
            A confidence value from [0, 1.0] measuring how confident the
            prediction is about the top match being accurate
          format: double
        isOccupied:
          type: boolean
          description: >-
            Whether or not the prediction believes the position is occupied by
            some labware
        positionId:
          type: integer
          description: The id of the position being scanned
          format: int32
        labwareClassification:
          type: string
          description: The labware classification of the top match
          nullable: true
        matches:
          type: array
          items:
            $ref: '#/components/schemas/DeckScanResultDto'
          description: The top N matches found, sorted by descending confidence value
          nullable: true
      additionalProperties: false
      description: >-
        The result of the a deck scan (labware detection) at a specific
        position, includes the top matches sorted by confidence
    DeckScanResultDto:
      type: object
      properties:
        detectedLabwareId:
          type: integer
          description: The id of the top match detected at the position
          format: int32
        confidence:
          type: number
          description: >-
            A confidence value from [0, 1.0] measuring how confident the
            prediction is about the top match being accurate
          format: double
        isOccupied:
          type: boolean
          description: >-
            Whether or not the prediction believes the position is occupied by
            some labware
        positionId:
          type: integer
          description: The id of the position being scanned
          format: int32
        labwareClassification:
          type: string
          description: The labware classification of the top match
          nullable: true
      additionalProperties: false
      description: A individual prediction result from the deck scan at a specific position
    DemoProtocolDto:
      type: object
      properties:
        protocolName:
          type: string
          description: The protocol name
          nullable: true
        systemName:
          type: string
          description: The system name
          nullable: true
        simulate:
          type: boolean
          description: Turn on or off simulation
      additionalProperties: false
      description: A protocol
    DigitalSignatureInfo:
      type: object
      properties:
        signature:
          type: string
          nullable: true
        certPassword:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        userName:
          type: string
          nullable: true
        location:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
      additionalProperties: false
    DigitalSignatureInfoDto:
      type: object
      properties:
        signatureStr:
          type: string
          description: Image string for the signature
          nullable: true
        email:
          type: string
          description: Operator's email
          nullable: true
        certPassword:
          type: string
          description: Operator specific password used during cert creation
          nullable: true
        location:
          type: string
          description: Location of the operation being performed
          nullable: true
        reason:
          type: string
          description: The reason the operation and signature
          nullable: true
        userName:
          type: string
          description: The operator's name
          nullable: true
      additionalProperties: false
      description: The create verification digital signature object
    DilutionDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the dilution
          nullable: true
        index:
          type: integer
          description: The index where the dilution is in the series
          format: int32
        dilutionFactorNumerator:
          type: number
          description: >-
            The numerator for the dilution factor (dilutionFactorNumerator /
            dilutionFactorDenominator)
          format: double
        dilutionFactorDenominator:
          type: number
          description: >-
            The denominator for the dilution factor (dilutionFactorNumerator /
            dilutionFactorDenominator)
          format: double
        sampleVolume:
          type: number
          description: The amount of sample used in this dilution, in μL
          format: double
        totalVolume:
          type: number
          description: The total volume for this dilution, in μL
          format: double
      additionalProperties: false
    DilutionTargetDto:
      required:
        - direction
        - position
        - sequences
        - wrap
      type: object
      properties:
        position:
          type: integer
          description: The position id where the dilution occurs
          format: int32
        wrap:
          type: string
          description: >-
            The option to enable wrapping of targets for dilution (Unknown,
            NoWrap, Wrap)
        direction:
          type: string
          description: >-
            The option to specify the direction of the dilution (Unknown,
            Horizontal, Vertical)
        sequences:
          type: array
          items:
            $ref: '#/components/schemas/DilutionTargetSequenceDto'
          description: The dilution target sequences
      additionalProperties: false
    DilutionTargetSequenceDto:
      type: object
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/AddressDto'
          description: The dilution targets addresses
          nullable: true
      additionalProperties: false
    DiscoverItem:
      type: object
      properties:
        endpoint:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        serialNumber:
          type: string
          nullable: true
        instrumentName:
          type: string
          nullable: true
      additionalProperties: false
    DispenseSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id for the settings
          format: int32
        transferVolume:
          maximum: 5000
          minimum: 0
          type: number
          description: The amount of volume getting dispensed in μL
          format: double
        pipettingHeight:
          type: number
          description: "The height at which to dispense in mm. If the pipettingHeightStartPoint is set to FromLiquidLevel, this parameter will\r\nbe in mm above the liquid surface. If the pipettingHeightStartPoint is set to FromContainerBottom, this will be in mm from the bottom of the container."
          format: double
        retractToWellTop:
          type: boolean
          description: Option to retract to the well top (overrides retract distance)
        retractDistance:
          type: number
          description: How far to retract before aspirating air for transport
          format: double
        pipettingHeightStartPoint:
          type: string
          description: >-
            The position from which to measure the pipetting height from,
            options are FromLiquidLevel or FromContainerBottom
          nullable: true
        mixVolume:
          type: number
          description: The amount of volume used during the mixing process in μL
          format: double
        mixCycles:
          type: integer
          description: The number of cycles to mix for
          format: int32
        mixSpeed:
          type: integer
          description: The speed at which to mix
          format: int32
        mixHeight:
          type: number
          description: "The height at which to mix in mm. If the mixHeightStartPoint is set to FromLiquidLevel, this parameter will\r\nbe in mm below the liquid surface. If the mixHeightStartPoint is set to FromContainerBottom, this will be in mm from the bottom of the container."
          format: double
        followLiquid:
          type: boolean
          description: Option for following the liquid height as it's being dispensed
        mixHeightStartPoint:
          type: string
          description: >-
            The position from which to measure the mixing height from, options
            are FromLiquidLevel or FromContainerBottom
          nullable: true
        enableMad:
          type: boolean
          description: Option to enable MAD
        offset:
          $ref: '#/components/schemas/OffsetDto'
        useOffset:
          type: boolean
          description: Option to enable dispense offset
      additionalProperties: false
    DoorEvent:
      type: object
      properties:
        isOpen:
          type: boolean
        isClosed:
          type: boolean
        instrumentName:
          type: string
          nullable: true
        pushedAt:
          type: string
          format: date-time
        action:
          type: string
          nullable: true
      additionalProperties: false
    DripDiagnosticPutDto:
      type: object
      properties:
        channelSelection:
          type: string
          description: >-
            The channels used to perform the drip diagnostic. Possible values
            are OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareId:
          type: integer
          description: The tip labware id
          format: int32
        troughLabwareId:
          type: integer
          description: The trough labware id
          format: int32
        tipPosition:
          type: integer
          description: The position id where the tip rack is located
          format: int32
        troughPosition:
          type: integer
          description: The position id where the trough is located
          format: int32
      additionalProperties: false
      description: The drip diagnostic test
    EnclosureLightingDto:
      type: object
      properties:
        red:
          type: integer
          description: The red component of the light [0-255]
          format: int32
        green:
          type: integer
          description: The green component of the light [0-255]
          format: int32
        blue:
          type: integer
          description: The blue component of the light [0-255]
          format: int32
        white:
          type: integer
          description: The white component of the light [0-255]
          format: int32
      additionalProperties: false
      description: The enclosure lighting
    EnvironmentGetDto:
      type: object
      properties:
        isStaging:
          type: boolean
          description: Is it in staging?
        visionSystemEnabled:
          type: boolean
          description: Is the vision system enabled?
        timingDiagnosticsEnabled:
          type: boolean
          description: Is the timing diagnostics enabled?
        dbCheckStatus:
          type: string
          description: "The status of the database. Can be one of three values: Ok - No issues, \r\n                        Warning - The threshold for database and drive check has been exceeded.  User should be notified to clean out files, \r\n                        Blocking  - Instrument cannot be initialized and protocols cannot be scheduled until levels are below the threshold set in Instinct."
          nullable: true
        driveCheckStatus:
          type: string
          description: The drive check status
          nullable: true
      additionalProperties: false
      description: Gets the current status of the environment
    EquipmentInfo:
      type: object
      properties:
        label:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
        optDetail:
          type: string
          nullable: true
      additionalProperties: false
    EquipmentInfoGroup:
      type: object
      properties:
        equipmentInfos:
          type: array
          items:
            $ref: '#/components/schemas/EquipmentInfo'
          nullable: true
      additionalProperties: false
    ErrorData:
      type: object
      properties:
        id:
          type: string
          nullable: true
        groupId:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        selectedResponse:
          type: string
          nullable: true
        errorResponses:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponse'
          nullable: true
      additionalProperties: false
    ErrorDetailSeverity:
      enum:
        - Warning
        - Error
      type: integer
      format: int32
    ErrorMessage:
      type: object
      properties:
        id:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        errorResponses:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponse'
          nullable: true
        selectedResponse:
          type: string
          nullable: true
        timeStamp:
          type: string
          format: date-time
          readOnly: true
        severity:
          type: string
          nullable: true
        groupId:
          type: string
          nullable: true
        errorData:
          type: array
          items:
            $ref: '#/components/schemas/ErrorData'
          nullable: true
        handled:
          type: boolean
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        id:
          type: string
          nullable: true
        response:
          type: string
          nullable: true
      additionalProperties: false
    ErrorsHandledCount:
      type: object
      properties:
        numberOfErrorsCleared:
          type: integer
          format: int32
        numberOfErrorsNotCleared:
          type: integer
          format: int32
      additionalProperties: false
    ExistingFile:
      type: object
      properties:
        name:
          type: string
          nullable: true
        viewName:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        lastModifiedDateTime:
          type: string
          format: date-time
      additionalProperties: false
    ExistingLabwareImport:
      type: object
      properties:
        name:
          type: string
          nullable: true
        viewName:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        lastModifiedDateTimeOfExisting:
          type: string
          format: date-time
        lastModifiedDateTimeOfImport:
          type: string
          format: date-time
      additionalProperties: false
    ExistingProtocolImport:
      type: object
      properties:
        name:
          type: string
          nullable: true
        viewName:
          type: string
          nullable: true
        doesExist:
          type: boolean
        type:
          type: string
          nullable: true
        lastModifiedDateOfExisting:
          type: string
          format: date-time
        lastModifiedDateOfImport:
          type: string
          format: date-time
      additionalProperties: false
    ExportZipFile:
      type: object
      properties:
        fileName:
          type: string
          nullable: true
        fileBytes:
          type: string
          format: byte
          nullable: true
        fileExtension:
          type: string
          nullable: true
          readOnly: true
      additionalProperties: false
    File:
      type: object
      additionalProperties: false
    FileImportResult:
      type: object
      properties:
        name:
          type: string
          nullable: true
        result:
          type: string
          nullable: true
      additionalProperties: false
    HardwareRequirements:
      type: object
      properties:
        hhs:
          type: boolean
        hhc:
          type: boolean
        hepaUv:
          type: boolean
        twoChannel:
          type: boolean
        mph:
          type: boolean
        siteOne:
          type: boolean
      additionalProperties: false
    HeatCoolStartOptions:
      enum:
        - PauseProtocolUntilTemp
        - PauseStepUntilTemp
        - PauseLoadingUntilTemp
      type: integer
      format: int32
    HeatCoolStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        platePosition:
          type: integer
          description: The position id of the plate to heat and/or cool
          format: int32
        heatCoolStartOptions:
          $ref: '#/components/schemas/HeatCoolStartOptions'
        temperature:
          type: integer
          description: The temperature to heat / cool to
          format: int32
        temperatureSet:
          type: boolean
          description: Flag indicating if a temperature has been set
      additionalProperties: false
    HeatShakeStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        platePosition:
          type: integer
          description: The position id of the plate to heat and/or shake
          format: int32
        duration:
          type: integer
          description: The duration to head and/or shake for in seconds
          format: int32
        heat:
          type: boolean
          description: Option to turn heat on/off
        shake:
          type: boolean
          description: Option to enable shaking on/off
        heatStartOptions:
          type: string
          description: >-
            Option determining when to start heating. Options are
            PauseProtocolUntilTemp, PauseStepUntilTemp, or NoDelay
          nullable: true
        rpm:
          type: integer
          description: RPMs for the shaking
          format: int32
        temperature:
          type: integer
          description: The temperature for the heat
          format: int32
      additionalProperties: false
    HeightSqueezeCalibrationDto:
      type: object
      properties:
        tipLabwareId:
          type: integer
          description: The id of the tip labware to use to perform the calibration
          format: int32
        tipLabwareSite:
          type: integer
          description: The id of the site where the tip rack is located
          format: int32
      additionalProperties: false
      description: The height squeeze calibration object
    HepaOverview:
      type: object
      properties:
        hasHepaUv:
          type: boolean
        fanStatus:
          type: boolean
      additionalProperties: false
    HepaStartOptions:
      enum:
        - StartBeforeProtocol
        - StartBeforeLoading
      type: integer
      format: int32
    HepaStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        hepaStartOptions:
          $ref: '#/components/schemas/HepaStartOptions'
        waitTime:
          type: integer
          description: Number of seconds to wait before moving on
          format: int32
        wait:
          type: boolean
          description: >-
            Flag to indicate if execution will pause while the fan runs for
            WaitTime
      additionalProperties: false
    HhcConfigurationGetDto:
      type: object
      properties:
        adapter:
          type: integer
          description: The HHC Adapter selected for the instrument
          format: int32
        supportedAdapters:
          type: array
          items:
            $ref: '#/components/schemas/SupportedHhcAdapter'
          nullable: true
          readOnly: true
      additionalProperties: false
    HhcConfigurationPutDto:
      type: object
      properties:
        adapter:
          type: integer
          description: The HHC Adapter selected for the instrument
          format: int32
      additionalProperties: false
    HhcTemperatureStatusDto:
      type: object
      properties:
        currentTemperature:
          type: number
          description: The current temperature of the HHC
          format: float
          nullable: true
        targetTemperature:
          type: number
          description: The target temperature of the HHC
          format: float
          nullable: true
      additionalProperties: false
      description: The object that holds the HHC temperature status
    HhsDiagnosticDto:
      type: object
      properties:
        heat:
          type: boolean
          description: Enable or disable heat on the HHS
        shake:
          type: boolean
          description: Enable or disable shaking on the HHS
        heatValue:
          type: integer
          description: The heat value
          format: int32
        shakeValue:
          type: integer
          description: The shake value
          format: int32
        duration:
          type: integer
          description: The duration of the heat/shake diagnostic test
          format: int32
        plateLabwareId:
          type: integer
          description: The plate labware id to transport to the HHS
          format: int32
      additionalProperties: false
      description: The HHS diagnostic test
    HitpickFileDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id of the protocol
          format: int32
        stepId:
          type: integer
          description: The database id of the hit-picking step
          format: int32
        fileName:
          type: string
          description: The name of the file
          nullable: true
        fileContents:
          type: string
          description: The content of the hit-picking file
          nullable: true
      additionalProperties: false
      description: The specified hit picking file for a given protocol and step
    HitPickingStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        fileName:
          type: string
          description: The name of the file used for hit-picking
          nullable: true
        filePath:
          type: string
          description: The path of the file used for hit-picking
          nullable: true
        fileContents:
          type: string
          description: The content of the file used for hit-picking
          nullable: true
        channelSelection:
          type: string
          description: >-
            The channel used to perform the hit-picking step. Options are
            OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareGroupId:
          type: integer
          description: The tip labware group
          format: int32
        fileSpecifiesSources:
          type: boolean
          description: Whether or not the file specifies sources
        fileSpecifiesTargets:
          type: boolean
          description: Whether or not the file specifies targets
        fileSpecifiesVolumes:
          type: boolean
          description: Whether or not the file specifies volumes
        useSameFile:
          type: boolean
          description: Whether or not the saved file should be used
        followWorklistOrder:
          type: boolean
          description: Whether or not the pipette order will follow the worklist order
        newTipsEachTransfer:
          type: boolean
          description: Whether or not new tips should be used for each transfer
        mixBeforeAspirate:
          type: boolean
          description: Enable mixing before aspirating from the sources
        mixAfterDispense:
          type: boolean
          description: Enable mixing after dispensing to the targets
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        dispenseToWaste:
          type: boolean
          description: Whether or not to dispense to waste
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        sources:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The sources
          nullable: true
        destinations:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The destination targets
          nullable: true
        liquidType:
          type: string
          description: The liquid type
          nullable: true
        tipLabwareDisplayName:
          type: string
          description: The display name for the tip labware
          nullable: true
        customizeLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        sourceLocationMethod:
          type: string
          description: The sources location method, options are deck or barcode
          nullable: true
        destinationLocationMethod:
          type: string
          description: The targets location method, options are deck or barcode
          nullable: true
      additionalProperties: false
    Independent:
      type: object
      properties:
        targetVolume:
          type: number
          format: double
        front:
          $ref: '#/components/schemas/VolumeGroup'
        rear:
          $ref: '#/components/schemas/VolumeGroup'
      additionalProperties: false
    IndependentChannelSensorData:
      type: object
      properties:
        sleeveSensor:
          type: boolean
        yHome:
          type: boolean
        zHome:
          type: boolean
        squeezeHome:
          type: boolean
        dispenserHome:
          type: boolean
      additionalProperties: false
    IndependentChannelsSensorState:
      type: object
      properties:
        present:
          type: boolean
        frontChannel:
          $ref: '#/components/schemas/IndependentChannelSensorData'
        rearChannel:
          $ref: '#/components/schemas/IndependentChannelSensorData'
      additionalProperties: false
    InstinctApiResponseDto:
      type: object
      properties:
        instinctVVersion:
          $ref: '#/components/schemas/InstinctVersion'
        restApiVersion:
          $ref: '#/components/schemas/InstinctVersion'
      additionalProperties: false
      description: The Instinct software API information object
    InstinctErrorDetails:
      type: object
      properties:
        id:
          type: string
          nullable: true
        code:
          type: integer
          format: int32
          nullable: true
        innerError:
          $ref: '#/components/schemas/InstinctErrorDetails'
        message:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        severity:
          $ref: '#/components/schemas/ErrorDetailSeverity'
        date:
          type: string
          format: date-time
          nullable: true
        handledDateTime:
          type: string
          format: date-time
          nullable: true
        handled:
          type: boolean
        responses:
          type: array
          items:
            type: string
          nullable: true
        groupId:
          type: string
          nullable: true
      additionalProperties: false
    InstinctErrorItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        date:
          type: string
          nullable: true
        severity:
          $ref: '#/components/schemas/InstinctErrorSeverity'
        handled:
          type: boolean
      additionalProperties: false
    InstinctErrors:
      type: object
      properties:
        totalItemCount:
          type: integer
          format: int32
        currentOffset:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/InstinctErrorItem'
          nullable: true
      additionalProperties: false
    InstinctErrorSeverity:
      enum:
        - Warning
        - Error
      type: integer
      format: int32
    InstinctTrace:
      type: object
      properties:
        affectedUser:
          type: string
          nullable: true
        level:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        date:
          type: string
          nullable: true
        source:
          type: string
          nullable: true
      additionalProperties: false
    InstinctTraces:
      type: object
      properties:
        totalItemCount:
          type: integer
          format: int32
        currentOffset:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/InstinctTrace'
          nullable: true
      additionalProperties: false
    InstinctVersion:
      type: object
      properties:
        major:
          type: integer
          format: int32
        minor:
          type: integer
          format: int32
        build:
          type: integer
          format: int32
        revision:
          type: integer
          format: int32
        majorRevision:
          type: integer
          format: int32
        minorRevision:
          type: integer
          format: int32
      additionalProperties: false
    InstrumentConfigurationGetDto:
      type: object
      properties:
        endpoint:
          type: string
          description: The endpoint for the instrument
          nullable: true
        instrumentName:
          type: string
          description: The instrument name
          nullable: true
        serialNumber:
          type: string
          description: The instrument serial number
          nullable: true
        thermalDevice:
          type: integer
          description: The thermal device
          format: int32
        hepaUv:
          type: boolean
          description: Whether or not the device has a HEPA/UV cap
        isEnclosurePresent:
          type: boolean
          description: Whether or not the enclosure is present
        isFakeInstrument:
          type: boolean
          description: Whether or not it is a fake simulated instrument
        channelConfiguration:
          type: integer
          description: The channel configuration for the instrument
          format: int32
        thermalDeviceNames:
          type: array
          items:
            $ref: '#/components/schemas/SupportedEnum'
          nullable: true
          readOnly: true
        channelConfigurationNames:
          type: array
          items:
            $ref: '#/components/schemas/SupportedEnum'
          nullable: true
          readOnly: true
        hhcConfiguration:
          $ref: '#/components/schemas/HhcConfigurationGetDto'
      additionalProperties: false
      description: The instrument configuration object
    InstrumentNetworkConfigurationChange:
      type: object
      properties:
        dateModified:
          type: string
          format: date-time
        computerName:
          type: string
          nullable: true
        internalPcDhcpEnabled:
          type: boolean
        internalPcIpAddress:
          type: string
          nullable: true
        internalPcSubnet:
          type: string
          nullable: true
        internalPcMacAddress:
          type: string
          nullable: true
        serialNumber:
          type: string
          nullable: true
        controllerBoardDhcpEnabled:
          type: boolean
        controllerBoardIpAddress:
          type: string
          nullable: true
        controllerBoardSubnet:
          type: string
          nullable: true
        controllerBoardMacAddress:
          type: string
          nullable: true
      additionalProperties: false
    InstrumentSettingsDto:
      type: object
      properties:
        enableCamera:
          type: boolean
          description: Flag to enable or disable the camera
        frontTipEjectThreshold:
          type: integer
          description: The front channel tip eject threshold value
          format: int32
        rearTipEjectThreshold:
          type: integer
          description: The rear channel tip eject threshold value
          format: int32
        mphTipEjectThreshold:
          type: integer
          description: The MPH channel tip eject threshold value
          format: int32
      additionalProperties: false
      description: The instrument settings object
    ISystemReadyState:
      type: object
      properties:
        isFirmwareUnsupported:
          type: boolean
        firmwareUnsupportedMessage:
          type: string
          nullable: true
        isServerReady:
          type: boolean
        isServiceFailure:
          type: boolean
        isAuthorizationTokenReady:
          type: boolean
        requiredServices:
          type: array
          items:
            $ref: '#/components/schemas/RequiredService'
          nullable: true
      additionalProperties: false
    KbaDto:
      type: object
      properties:
        userName:
          type: string
          description: The user name
          nullable: true
        question:
          type: string
          description: The specified question
          nullable: true
        answer:
          type: string
          description: The answer to the question
          nullable: true
      additionalProperties: false
      description: The knowledge-based authentication for password or user account reset
    KbaValidationDto:
      type: object
      properties:
        kbaAnswer:
          type: string
          description: The correct answer
          nullable: true
        userAnswer:
          type: string
          description: The answer inputted by the user
          nullable: true
      additionalProperties: false
      description: The validation object for the knowledge-based authentication
    LabwareCategoryDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id
          format: int32
        displayName:
          type: string
          description: The display name
          nullable: true
        name:
          type: string
          description: The unique name
          nullable: true
        grouping:
          type: string
          description: The grouping of category it belongs in
          nullable: true
        classification:
          type: string
          description: "The classificaton it is part of. Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Assembly, Lid, LidCarrier"
          nullable: true
      additionalProperties: false
      description: The Labware category object
    LabwareClassification:
      enum:
        - Unknown
        - Plate
        - SampleTube
        - TubeRack
        - Trough
        - TipRack
        - Carrier
        - MicroTubeRack
        - MicroTube
        - Container
        - Magnet
        - VirtualTubeRack
        - Lid
        - Assembly
        - ThermalDevice
        - LidCarrier
        - Empty
      type: integer
      format: int32
    LabwareContainerDto:
      type: object
      properties:
        isCircle:
          type: boolean
          description: True if the container is round.
        radius:
          type: number
          description: The container radius.
          format: double
      additionalProperties: false
      description: Basic information regarding the shape of a labware's container.
    LabwareDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id
          format: int32
          readOnly: true
        name:
          type: string
          description: The labware reference name
          nullable: true
          readOnly: true
        containerName:
          type: string
          description: >-
            The labware reference name for the container if applicable (for
            troughs and tube racks)
          nullable: true
          readOnly: true
        rows:
          type: integer
          description: The number of rows
          format: int32
        columns:
          type: integer
          description: The number of columns
          format: int32
        volume:
          type: number
          description: A volume value for the labware
          format: double
        displayName:
          type: string
          description: The display name
          nullable: true
        partNumbers:
          type: string
          description: The part number(s) for the labware
          nullable: true
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LabwareCategoryDto'
          description: The categories assigned to the labware
          nullable: true
        classification:
          type: string
          description: "The classificaton it is part of. Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Lid, Assembly, LidCarrier"
          nullable: true
        siteAlignments:
          type: array
          items:
            type: string
          description: The site alignment names
          nullable: true
        isFavorite:
          type: boolean
          description: Whether or not the labware is a user favorite
        parts:
          type: array
          items:
            $ref: '#/components/schemas/AssemblyPartDto'
          description: >-
            The labware parts that make up the assembly (only applicable for
            assembly classification
          nullable: true
      additionalProperties: false
      description: The Labware object
    LabwareFavoritePostDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the labware to set the favorite flag
          format: int32
        isFavorite:
          type: boolean
          description: The favorite flag value
      additionalProperties: false
      description: The POST used to set the favorite flag of a labware
    LabwareGroupGetDto:
      type: object
      properties:
        labware:
          $ref: '#/components/schemas/LabwareDto'
        id:
          type: integer
          description: The id for the labware group
          format: int32
        groupName:
          type: string
          description: The labware group name
          nullable: true
        reuseTipsBetweenSteps:
          type: boolean
          description: Whether or not tips should be reused between steps
        liquidName:
          type: string
          description: The liquid name associated with the labware group
          nullable: true
        liquidType:
          type: string
          description: The liquid type associated with the labware group
          nullable: true
        liquidVolumeOptions:
          type: string
          description: >-
            The liquid volume options: CalculateForMe, Runtime,
            SamePerContainer, SpecifyPerContainer
          nullable: true
      additionalProperties: false
    LabwareGroupPostPutDto:
      type: object
      properties:
        labwareId:
          type: integer
          format: int32
        id:
          type: integer
          description: The id for the labware group
          format: int32
        groupName:
          type: string
          description: The labware group name
          nullable: true
        reuseTipsBetweenSteps:
          type: boolean
          description: Whether or not tips should be reused between steps
        liquidName:
          type: string
          description: The liquid name associated with the labware group
          nullable: true
        liquidType:
          type: string
          description: The liquid type associated with the labware group
          nullable: true
        liquidVolumeOptions:
          type: string
          description: >-
            The liquid volume options: CalculateForMe, Runtime,
            SamePerContainer, SpecifyPerContainer
          nullable: true
      additionalProperties: false
    LabwarePositionGetDto:
      type: object
      properties:
        row:
          type: integer
          description: The labware row
          format: int32
        column:
          type: integer
          description: The labware column
          format: int32
        id:
          type: integer
          description: The database id of the deck position object
          format: int32
        labwareGroup:
          $ref: '#/components/schemas/LabwareGroupGetDto'
        position:
          type: integer
          description: The position id ranging from 1 to 8
          format: int32
        positionName:
          type: string
          description: The name of the position
          nullable: true
        liquidVolume:
          type: number
          description: The amount of liquid found in the position
          format: double
      additionalProperties: false
      description: The labware position
    LabwarePositionPostPutDto:
      required:
        - column
        - row
      type: object
      properties:
        row:
          type: integer
          description: The labware row
          format: int32
        column:
          type: integer
          description: The labware column
          format: int32
        id:
          type: integer
          description: The database id of the deck position, required for updates
          format: int32
        positionName:
          type: string
          description: The name of the position
          nullable: true
        labwareGroup:
          $ref: '#/components/schemas/LabwareGroupPostPutDto'
        liquidVolume:
          type: number
          description: The liquid volume
          format: double
      additionalProperties: false
      description: The labware position
    LabwarePreviewDto:
      type: object
      properties:
        name:
          type: string
          nullable: true
        displayName:
          type: string
          nullable: true
        numberRequired:
          type: integer
          format: int32
        imagePath:
          type: string
          nullable: true
      additionalProperties: false
    LabwareSummaryDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id
          format: int32
          readOnly: true
        name:
          type: string
          description: The labware reference name
          nullable: true
          readOnly: true
        containerName:
          type: string
          description: >-
            The labware reference name for the container if applicable (for
            troughs and tube racks)
          nullable: true
          readOnly: true
        rows:
          type: integer
          description: The number of rows
          format: int32
        columns:
          type: integer
          description: The number of columns
          format: int32
        volume:
          type: number
          description: A volume value for the labware
          format: double
        displayName:
          type: string
          description: The display name
          nullable: true
        imageExtension:
          type: string
          description: The preview image file type (.png, .jpg, etc...)
          nullable: true
        imageData:
          type: string
          description: The preview image file data
          format: byte
          nullable: true
        partNumbers:
          type: string
          description: The part number(s) for the labware
          nullable: true
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LabwareCategoryDto'
          description: The categories assigned to the labware
          nullable: true
        classification:
          type: string
          description: "The classificaton it is part of. Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Assembly, Lid, LidCarrier"
          nullable: true
        siteAlignments:
          type: array
          items:
            type: string
          description: The site alignment names
          nullable: true
        isFavorite:
          type: boolean
          description: Whether or not the labware is a user favorite
        parts:
          type: array
          items:
            $ref: '#/components/schemas/AssemblyPartSummaryDto'
          description: >-
            The labware parts that make up the assembly (only applicable for
            assembly classification
          nullable: true
      additionalProperties: false
      description: "A summary representation of the labware. Currently this class looks identical to LabwareDto, but eventually labware might contain\r\nmore information that the summary doesn't care about."
    LidStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        startPosition:
          type: integer
          description: The position id of the lid to be transported from
          format: int32
        endPosition:
          type: integer
          description: The position id where the lid should be transported to
          format: int32
      additionalProperties: false
    LightingSettings:
      type: object
      properties:
        deckLightsSetting:
          $ref: '#/components/schemas/DeckLightsSetting'
        deckLightsSettingDisplayName:
          type: string
          nullable: true
          readOnly: true
        disableErrorLights:
          type: boolean
      additionalProperties: false
    LightingSettingsDto:
      type: object
      properties:
        disableErrorLights:
          type: boolean
          description: Flag to disable or enable error lights
        deckLightsSetting:
          $ref: '#/components/schemas/DeckLightsSetting'
      additionalProperties: false
      description: The lighting settings object
    LightingStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        lightingSettings:
          $ref: '#/components/schemas/LightingSettingsDto'
      additionalProperties: false
    LiquidClassSpecDto:
      type: object
      properties:
        liquidType:
          type: string
          description: The liquid type
          nullable: true
        tipName:
          type: string
          description: The type of tips used for the liquid transfer
          nullable: true
        tipStartPoint:
          type: string
          description: >-
            The position from which to measure the pipetting height from,
            options are FromLiquidLevel or FromContainerBottom
          nullable: true
        multiDispense:
          type: boolean
          description: Whether or not the transfer is part of a multi-dispense
        channelSelection:
          type: string
          description: >-
            The channels used to perform the add reagent step. Possible values
            are OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
      additionalProperties: false
      description: >-
        The liquid class specification object. Used as the criteria to determine
        which liquid class to use
    LiquidOverview:
      type: object
      properties:
        key:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LiquidOverviewLocation'
          nullable: true
          readOnly: true
      additionalProperties: false
    LiquidOverviewLocation:
      type: object
      properties:
        deckPosition:
          type: integer
          format: int32
        positionColumn:
          type: integer
          format: int32
        positionRow:
          type: integer
          format: int32
      additionalProperties: false
    LiquidSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id for the liquid settings
          format: int32
        asFlowRate:
          type: number
          description: The aspirate flow rate in μL/second
          format: double
        asMixFlowRate:
          type: number
          description: The aspirate mix flow rate in μL/second
          format: double
        asBlowOutVolume:
          type: number
          description: The aspirate blow out volume in μL
          format: double
        asSwapSpeed:
          type: number
          description: The aspirate swap speed
          format: double
        asSettlingTime:
          type: number
          description: The aspirate settling time
          format: double
        asAirTransport:
          type: number
          description: The aspirate air transport
          format: double
        dsFlowRate:
          type: number
          description: The dispense flow rate in μL/second
          format: double
        dsMixFlowRate:
          type: number
          description: The dispense mix flow rate in μL/second
          format: double
        dsBlowOutVolume:
          type: number
          description: The dispense blow out volume in μL
          format: double
        dsSwapSpeed:
          type: number
          description: The dispense swap speed
          format: double
        dsSettlingTime:
          type: number
          description: The dispense settling time
          format: double
        dsAirTransport:
          type: number
          description: The dispense air transport
          format: double
        correctionCurve:
          type: array
          items:
            $ref: '#/components/schemas/CorrectionPoint'
          description: The correction curve used to adjust the volumes
          nullable: true
        isUserLiquid:
          type: boolean
          description: Whether or not the liquid was defined by the user
      additionalProperties: false
    LiquidTypeDto:
      type: object
      properties:
        id:
          type: string
          description: The database id of the liquid type
          nullable: true
          readOnly: true
        name:
          type: string
          description: The name for the liquid type
          nullable: true
        locked:
          type: boolean
          description: Whether or not the liquid type is locked (can be edited)
      additionalProperties: false
      description: The liquid type
    LiquidUsageDto:
      type: object
      properties:
        liquidName:
          type: string
          description: The liquid type name
          nullable: true
        protocols:
          type: array
          items:
            type: string
          description: The list of protocols that use this liquid
          nullable: true
      additionalProperties: false
      description: The liquid type usage over protocols
    LiquidUsagePostDto:
      type: object
      properties:
        liquidNames:
          type: array
          items:
            type: string
          description: The names of the liquids
          nullable: true
      additionalProperties: false
      description: The liquid type usage
    LoadCompleteAction:
      enum:
        - Run
        - Abort
      type: integer
      format: int32
    LoadCompleteDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id of the protocol
          format: int32
        simulate:
          type: boolean
          description: Flag indicating a simulated run
        loadCompleteAction:
          $ref: '#/components/schemas/LoadCompleteAction'
        residualTips:
          type: array
          items:
            $ref: '#/components/schemas/ResidualTipItemDto'
          description: The set of tips used
          nullable: true
        barcodes:
          type: array
          items:
            $ref: '#/components/schemas/BarcodeTargetDto'
          description: The barcodes for barcoded positions
          nullable: true
        liquidVolumes:
          type: array
          items:
            $ref: '#/components/schemas/LoadPositionVolumeDto'
          description: The inventory of liquids
          nullable: true
      additionalProperties: false
      description: >-
        The completed loading of resources, including tips, barcodes, and
        liquids
    LoadPositionVolumeDto:
      type: object
      properties:
        deckPosition:
          type: integer
          description: The position id
          format: int32
        positionOnSite:
          type: integer
          description: >-
            The labware position id, this could be an index of a tube or a
            trough
          format: int32
        row:
          type: integer
          description: The row on the labware
          format: int32
        column:
          type: integer
          description: The column on the labware
          format: int32
        volume:
          type: number
          description: The amount of volume to load
          format: double
      additionalProperties: false
      description: The volume loading at a position
    MaintenanceErrorDto:
      type: object
      properties:
        message:
          type: string
          nullable: true
        response:
          type: string
          nullable: true
      additionalProperties: false
    MaintenanceGetDetailDto:
      type: object
      properties:
        id:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        dueDateTime:
          type: string
          format: date-time
        lastExecutionTime:
          type: string
          format: date-time
      additionalProperties: false
    Measurement:
      type: object
      properties:
        label:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
      additionalProperties: false
    MeasurementGroup:
      type: object
      properties:
        measurements:
          type: array
          items:
            $ref: '#/components/schemas/Measurement'
          nullable: true
      additionalProperties: false
    MLPrepServiceSoftwareApiResponseDto:
      type: object
      properties:
        applicationVersion:
          type: string
          nullable: true
      additionalProperties: false
    MlPrepSystemTimeZone:
      type: object
      properties:
        utcOffsetHours:
          type: integer
          format: int32
        utcOffsetMinutes:
          type: integer
          format: int32
        displayName:
          type: string
          nullable: true
        id:
          type: string
          nullable: true
        supportsDst:
          type: boolean
      additionalProperties: false
    MlPrepTimeGetData:
      type: object
      properties:
        year:
          type: integer
          format: int32
        month:
          type: integer
          format: int32
        day:
          type: integer
          format: int32
        dayOfWeek:
          type: string
          nullable: true
        hours:
          type: integer
          format: int32
        minutes:
          type: integer
          format: int32
        seconds:
          type: integer
          format: int32
        timeZone:
          $ref: '#/components/schemas/MlPrepSystemTimeZone'
      additionalProperties: false
    MockInstrumentDto:
      type: object
      properties:
        thermalDevice:
          type: integer
          description: The thermal device
          format: int32
        hepaUv:
          type: boolean
          description: Whether or not the device has a HEPA/UV cap
        channelConfiguration:
          type: integer
          description: The channel configuration
          format: int32
        isEnclosurePresent:
          type: boolean
          description: Whether or not the enclosure is present
      additionalProperties: false
      description: The mock instrument object
    MotorDiagnosticDto:
      type: object
      properties:
        displayName:
          type: string
          description: The display name
          nullable: true
        motor:
          type: integer
          description: The id of the motor to test
          format: int32
        channel:
          type: integer
          description: The id of the channel to test
          format: int32
        mphOnly:
          type: boolean
          description: Whether or not to use the MPH only
        runtimeInSeconds:
          type: integer
          description: The amount of time to run in seconds
          format: int32
      additionalProperties: false
      description: The motor diagnostic test
    MPH:
      type: object
      properties:
        targetVolume:
          type: number
          format: double
        mphChannels:
          $ref: '#/components/schemas/VolumeGroup'
      additionalProperties: false
    MphSensorState:
      type: object
      properties:
        present:
          type: boolean
        sleeveSensors:
          type: array
          items:
            type: boolean
          nullable: true
        yHome:
          type: boolean
        zHome:
          type: boolean
        squeezeHome:
          type: boolean
        dispenserHome:
          type: boolean
      additionalProperties: false
    MultiDispenseSettingsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the multi-dispense settings
          format: int32
        usePreAliquot:
          type: boolean
          description: Whether or not the multi-dispense should perform a pre-aliquot
        preAliquotSettings:
          $ref: '#/components/schemas/AliquotSettingsDto'
        usePostAliquot:
          type: boolean
          description: Whether or not the multi-dispense should perform a post-aliquot
        postAliquotSettings:
          $ref: '#/components/schemas/AliquotSettingsDto'
      additionalProperties: false
    NetworkConfigurationBaseDto:
      type: object
      properties:
        computerName:
          type: string
          nullable: true
        internalPcDhcpEnabled:
          type: boolean
        internalPcIpAddress:
          type: string
          nullable: true
        internalPcSubnet:
          type: string
          nullable: true
        internalPcMacAddress:
          type: string
          nullable: true
        internalPcNetworkAdapterOperational:
          type: boolean
        serialNumber:
          type: string
          nullable: true
        controllerBoardDhcpEnabled:
          type: boolean
        controllerBoardIpAddress:
          type: string
          nullable: true
        controllerBoardSubnet:
          type: string
          nullable: true
        controllerBoardMacAddress:
          type: string
          nullable: true
      additionalProperties: false
    NetworkConfigurationGetDto:
      type: object
      properties:
        isDefault:
          type: boolean
        isFakeInstrument:
          type: boolean
        computerName:
          type: string
          nullable: true
        internalPcDhcpEnabled:
          type: boolean
        internalPcIpAddress:
          type: string
          nullable: true
        internalPcSubnet:
          type: string
          nullable: true
        internalPcMacAddress:
          type: string
          nullable: true
        internalPcNetworkAdapterOperational:
          type: boolean
        serialNumber:
          type: string
          nullable: true
        controllerBoardDhcpEnabled:
          type: boolean
        controllerBoardIpAddress:
          type: string
          nullable: true
        controllerBoardSubnet:
          type: string
          nullable: true
        controllerBoardMacAddress:
          type: string
          nullable: true
      additionalProperties: false
    NetworkConfigurationResult:
      type: object
      properties:
        isSuccess:
          type: boolean
        rebootRequired:
          type: boolean
        error:
          type: string
          nullable: true
      additionalProperties: false
    NormalizationDatum:
      type: object
      properties:
        fileConcentration:
          type: string
          nullable: true
        fileSampleVolume:
          type: string
          nullable: true
        fileDiluentVolume:
          type: string
          nullable: true
        concentration:
          type: number
          format: float
        sourceSite:
          type: integer
          format: int32
        sourceWell:
          type: string
          nullable: true
        targetSite:
          type: integer
          format: int32
        targetWell:
          type: string
          nullable: true
        sourceId:
          type: string
          nullable: true
        sampleVolume:
          type: number
          format: double
        diluentVolume:
          type: number
          format: double
        finalConcentration:
          type: number
          format: float
        finalVolume:
          type: number
          format: double
        samplePipettingStatus:
          $ref: '#/components/schemas/PipettingStatus'
        diluentPipettingStatus:
          $ref: '#/components/schemas/PipettingStatus'
        normalizationErrorType:
          $ref: '#/components/schemas/NormalizationErrorType'
        normalizationRecovery:
          $ref: '#/components/schemas/NormalizationRecovery'
        diluentActionTime:
          type: string
          format: date-time
          nullable: true
        sampleActionTime:
          type: string
          format: date-time
          nullable: true
        userName:
          type: string
          nullable: true
      additionalProperties: false
    NormalizationDatumDto:
      type: object
      properties:
        samplePipettingStatus:
          $ref: '#/components/schemas/PipettingStatus'
        diluentPipettingStatus:
          $ref: '#/components/schemas/PipettingStatus'
        normalizationErrorType:
          $ref: '#/components/schemas/NormalizationErrorType'
        normalizationRecovery:
          $ref: '#/components/schemas/NormalizationRecovery'
        actionDateTime:
          type: string
          description: >-
            Action date time, Format: YYYY-MM-DD hh:mm:ss e.g 2020-09-02
            10:33:59
          format: date-time
          nullable: true
        id:
          type: integer
          description: The id for the normalization
          format: int32
        concentration:
          type: number
          description: The concentration
          format: float
        sourceSite:
          type: integer
          description: The site source
          format: int32
        sourceWell:
          type: string
          description: The source well
          nullable: true
        targetSite:
          type: integer
          description: The target site
          format: int32
        targetWell:
          type: string
          description: The target well
          nullable: true
        sourceId:
          type: string
          description: >-
            The source id: Barcode or id (&lt;SourceSite&gt;_&lt;SourceWell&gt; 
            (eg. 1_A1)) of the source sample 
          nullable: true
        sampleVolume:
          type: number
          description: The sample volume in μL
          format: double
        diluentVolume:
          type: number
          description: The diluent volume in μL
          format: double
        finalConcentration:
          type: number
          description: The final concentration
          format: float
        finalVolume:
          type: number
          description: The final volume in μL
          format: double
        userName:
          type: string
          description: The user name
          nullable: true
      additionalProperties: false
    NormalizationErrorType:
      enum:
        - OK
        - TooHighConcentration
        - TooLowConcentration
        - VolumeMismatch
        - ConcentrationNotValid
        - VolumeTooHigh
        - VolumeTooLow
        - VolumesAreZero
        - DuplicateTarget
        - SampleLessThanMinimum
      type: integer
      format: int32
    NormalizationFileDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id of the protocol
          format: int32
        stepId:
          type: integer
          description: The database id of the normalization step
          format: int32
        fileName:
          type: string
          description: The name of the file
          nullable: true
        filePath:
          type: string
          description: The path of the file
          nullable: true
        fileContents:
          type: string
          description: The content of the normalization file
          nullable: true
      additionalProperties: false
      description: The specified normalization file for a given protocol and step
    NormalizationFileErrorsDto:
      type: object
      properties:
        normalizationData:
          type: array
          items:
            $ref: '#/components/schemas/NormalizationDatum'
          description: The normalization items that had issues
          nullable: true
        allowedErrorThreshold:
          type: integer
          description: The number of normalization issues allowed for the step
          format: int32
        errorString:
          type: string
          description: The display string for all normalization errors
          nullable: true
      additionalProperties: false
    NormalizationPipetteSettingsGetDto:
      type: object
      properties:
        tipLabwareGroupId:
          type: integer
          description: The tip labware group
          format: int32
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        mixBeforeAspirate:
          type: boolean
          description: Enabling or disabling mixing before the aspirate
        mixAfterDispense:
          type: boolean
          description: Enabling or disabling mixing after the dispense
        liquidType:
          type: string
          description: The liquid type for the normalization
          nullable: true
        newTipsEachTransfer:
          type: boolean
          description: Whether or not new tips should be used for each transfer
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipLabwareName:
          type: string
          description: The name for the tip labware
          nullable: true
        tipVolume:
          type: number
          description: The volume of the tip labware
          format: double
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        useCustomLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
      additionalProperties: false
    NormalizationRecovery:
      enum:
        - OK
        - Skip
        - PipetteMinSample
        - PipetteMaxSample
        - PipetteMaxVolume
      type: integer
      format: int32
    NormalizationStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        normalizationData:
          type: array
          items:
            $ref: '#/components/schemas/NormalizationDatumDto'
          description: The normalization data
          nullable: true
        useSameFile:
          type: boolean
          description: Option to use the same file as specified
        fileSpecifiesOptionalData:
          type: boolean
          description: Whether or not the file specifies optional data
        inputFileName:
          type: string
          description: Input file name used for normalization
          nullable: true
        inputFilePath:
          type: string
          description: Path to the input file used for normalization
          nullable: true
        outputFilePath:
          type: string
          description: Path to the output file for the resulting normalization
          nullable: true
        outputFileName:
          type: string
          description: The output file name for the resulting normalization
          nullable: true
        finalConcentration:
          type: number
          description: The final concentration of the normalization
          format: float
        finalVolume:
          type: number
          description: The final volume of the normalization
          format: double
        minimumSampleVolume:
          type: number
          description: The minimum volume of the normalization
          format: double
        highConcentrationSkip:
          type: boolean
          description: Whether or not to skip the high concentration
        lowConcentrationSkip:
          type: boolean
          description: Whether or not to skip the low concentration
        maxErrors:
          type: integer
          description: Max number of errors
          format: int32
        showRuntimeErrors:
          $ref: '#/components/schemas/ShowRuntimeErrors'
        channelSelection:
          type: string
          description: >-
            The channel used to perform the normalization step. Options are
            OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        diluent:
          $ref: '#/components/schemas/LiquidTypeDto'
        liquidLabwareGroupId:
          type: integer
          description: The labware containing the liquid
          format: int32
        lowVolumeDiluent:
          $ref: '#/components/schemas/NormalizationPipetteSettingsGetDto'
        midVolumeDiluent:
          $ref: '#/components/schemas/NormalizationPipetteSettingsGetDto'
        lowVolumeSample:
          $ref: '#/components/schemas/NormalizationPipetteSettingsGetDto'
        midVolumeSample:
          $ref: '#/components/schemas/NormalizationPipetteSettingsGetDto'
      additionalProperties: false
    OffsetDto:
      type: object
      properties:
        x:
          type: number
          description: The x offset
          format: double
        'y':
          type: number
          description: The y offset
          format: double
      additionalProperties: false
    Operation:
      type: object
      properties:
        value:
          type: object
          nullable: true
        path:
          type: string
          nullable: true
        op:
          type: string
          nullable: true
        from:
          type: string
          nullable: true
      additionalProperties: false
    Pause:
      type: object
      properties:
        startPauseTime:
          type: string
          format: date-time
          readOnly: true
        endPauseTime:
          type: string
          format: date-time
          readOnly: true
        type:
          type: string
          nullable: true
        pauseSeconds:
          type: integer
          format: int32
          readOnly: true
      additionalProperties: false
    PauseStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        duration:
          type: integer
          description: The duration of the pause
          format: int32
        message:
          type: string
          description: The message to be displayed during the pause
          nullable: true
        pauseForSetDuration:
          type: boolean
          description: Whether the pause should be for a set duration or indefinite
      additionalProperties: false
    Permission:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
      additionalProperties: false
    PermissionDto:
      type: object
      properties:
        id:
          type: string
          description: The instinct id for the permission
          nullable: true
          readOnly: true
        name:
          type: string
          description: The name of the permission
          nullable: true
          readOnly: true
        description:
          type: string
          description: The description of the permission
          nullable: true
          readOnly: true
      additionalProperties: false
      description: The permission definition for users
    PipetteActivity:
      type: object
      properties:
        channel:
          type: string
          nullable: true
        liquidType:
          type: string
          nullable: true
        liquidClass:
          type: string
          nullable: true
        source:
          type: array
          items:
            $ref: '#/components/schemas/PipetteActivityItems'
          nullable: true
        target:
          type: array
          items:
            $ref: '#/components/schemas/PipetteActivityItems'
          nullable: true
      additionalProperties: false
    PipetteActivityItems:
      type: object
      properties:
        volume:
          type: string
          nullable: true
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        deckPosition:
          type: integer
          format: int32
        labware:
          type: string
          nullable: true
        barcode:
          type: string
          nullable: true
        well:
          type: string
          nullable: true
      additionalProperties: false
    PipetteTarget:
      type: object
      properties:
        position:
          type: integer
          format: int32
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/Address'
          nullable: true
      additionalProperties: false
    PipetteTargetDto:
      required:
        - addresses
        - position
      type: object
      properties:
        position:
          type: integer
          description: The id of the deck position (1 - 8)
          format: int32
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/AddressDto'
          description: The list of targeted addresses
      additionalProperties: false
    PipettingStatus:
      enum:
        - OK
        - PipettingWarning
        - PipettingError
        - Empty
        - NotStarted
        - InProgress
        - Aspirating
        - Dispensing
      type: integer
      format: int32
    PlateTransport:
      type: object
      properties:
        startPosition:
          type: integer
          format: int32
        endPosition:
          type: integer
          format: int32
        stepOrder:
          type: integer
          format: int32
      additionalProperties: false
    PolicySettingsDto:
      type: object
      properties:
        maximumLoginAttempts:
          type: integer
          description: The maximum number of login attempts before a user is locked out
          format: int32
        lockTimeout:
          type: integer
          description: >-
            The amount of time a user will be locked out when making too many
            login attempts
          format: int32
        passwordExpires:
          type: integer
          description: The amount of time before a user's password expires
          format: int32
        passwordExpiresNotification:
          type: integer
          description: The password expiration notification
          format: int32
        minimumPasswordLength:
          type: integer
          description: The required minimum length for a password
          format: int32
        inactiveLogout:
          type: integer
          description: The amount of time a user is allowed to be inactive before login out
          format: int32
        logoutCountdown:
          type: integer
          description: The amount of time a user is allowed to be inactive before login out
          format: int32
        enableUserManagement:
          type: boolean
          description: >-
            Flag to enable or disable user management. Disabling user management
            will remove the need for users to log in or out.
      additionalProperties: false
      description: The policy settings object
    Position:
      type: object
      properties:
        sites:
          type: array
          items:
            $ref: '#/components/schemas/Site'
          nullable: true
      additionalProperties: false
    PrepChannel:
      enum:
        - Unknown
        - IndependentFrontChannel
        - IndependentRearChannel
        - MphChannels
        - MphChannel1
        - MphChannel2
        - MphChannel3
        - MphChannel4
        - MphChannel5
        - MphChannel6
        - MphChannel7
        - MphChannel8
      type: integer
      format: int32
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    ProcedureDto:
      type: object
      properties:
        id:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        info:
          type: string
          nullable: true
        lastExecutionTime:
          type: string
          format: date-time
      additionalProperties: false
    ProtocolFavoritePostDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id of the protocol to favorite
          format: int32
        favorite:
          type: boolean
          description: Value of the favorite flag to set
      additionalProperties: false
      description: An object used to set the favorite flag of a protocol
    ProtocolGetDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the protocol
          format: int32
        name:
          type: string
          description: The name of the protocol
          nullable: true
        deck:
          $ref: '#/components/schemas/DeckLayoutGetDto'
        hardwareRequirements:
          $ref: '#/components/schemas/HardwareRequirements'
        steps:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/StepGetDto'
              - $ref: '#/components/schemas/AddReagentStepGetDto'
              - $ref: '#/components/schemas/ReplicateSamplesStepGetDto'
              - $ref: '#/components/schemas/TransferSamplesStepGetDto'
              - $ref: '#/components/schemas/HeatShakeStepGetDto'
              - $ref: '#/components/schemas/PauseStepGetDto'
              - $ref: '#/components/schemas/HitPickingStepGetDto'
              - $ref: '#/components/schemas/SerialDilutionStepGetDto'
              - $ref: '#/components/schemas/RtsaStepGetDto'
              - $ref: '#/components/schemas/BarcodeStepGetDto'
              - $ref: '#/components/schemas/TransportStepGetDto'
              - $ref: '#/components/schemas/NormalizationStepGetDto'
              - $ref: '#/components/schemas/ReagentFromFileStepGetDto'
              - $ref: '#/components/schemas/LightingStepGetDto'
              - $ref: '#/components/schemas/HeatCoolStepGetDto'
              - $ref: '#/components/schemas/LidStepGetDto'
              - $ref: '#/components/schemas/HepaStepGetDto'
          description: The list of steps
          nullable: true
        isValid:
          type: boolean
          description: >-
            The flag determining if the protocol is valid (has been verified to
            run)
        isFavorite:
          type: boolean
          description: Whether or not the protocol is a user favorite
        validationErrors:
          type: array
          items:
            type: string
          description: >-
            The validation errors found during the last verification, will be
            empty if isValid is true.
          nullable: true
        createdDateTime:
          type: string
          description: The date the protocol was created
          format: date-time
        createdByUserName:
          type: string
          description: The name of the user that created the protocol
          nullable: true
        lastModifiedDateTime:
          type: string
          description: The date the protocol was modified last
          format: date-time
        lastModifiedUser:
          type: string
          description: The user that last modified the protocol
          nullable: true
        lastRunDateTime:
          type: string
          description: The date the protocol was last run
          format: date-time
        lastRunUser:
          type: string
          description: The name of the user that last ran the protocol
          nullable: true
        isHidden:
          type: boolean
          description: Whether the protocol should be hidden or visible
        isReadOnly:
          type: boolean
          description: Whether or not the protocol can be modified
        reportSettings:
          $ref: '#/components/schemas/ReportSettingsDto'
      additionalProperties: false
      description: The protocol definition data retrieved
    ProtocolNameDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id for the protocol
          format: int32
        name:
          type: string
          description: The name of the protocol
          nullable: true
        isVisible:
          type: boolean
          description: Whether or not the protocol is visible
      additionalProperties: false
      description: A simplified object containing the protocol name
    ProtocolPostDto:
      required:
        - deck
        - name
      type: object
      properties:
        id:
          type: integer
          description: The database id for the protocol, required for updates
          format: int32
        name:
          type: string
          description: The name of the protocol
        makeNameUnique:
          type: boolean
          description: "Flag used for generating a unique protocol name. \r\nIf true then the server has permission to make the protocol name unique if it already exists."
        skipValidation:
          type: boolean
          description: >-
            When true the protocol will be saved to the database without being
            validated.
        createdDateTime:
          type: string
          description: The date the protocol was created
          format: date-time
          readOnly: true
        createdByUserName:
          type: string
          description: The name of the user that created the protocol
          nullable: true
        lastModifiedDateTime:
          type: string
          description: The date the protocol was modified last
          format: date-time
          readOnly: true
        lastModifiedUser:
          type: string
          description: The user that last modified the protocol
          nullable: true
          readOnly: true
        lastRunDateTime:
          type: string
          description: The date the protocol was last run
          format: date-time
          readOnly: true
        lastRunUser:
          type: string
          description: The name of the user that last ran the protocol
          nullable: true
          readOnly: true
        deck:
          $ref: '#/components/schemas/DeckLayoutPostPutDto'
      additionalProperties: false
      description: The protocol definition data for saving
    ProtocolPostResponse:
      type: object
      properties:
        isValid:
          type: boolean
          description: >-
            The flag determining if the protocol is valid (has been verified to
            run)
        validationErrors:
          type: array
          items:
            type: string
          description: >-
            The validation errors found during the last verification, will be
            empty if isValid is true.
          nullable: true
      additionalProperties: false
      description: The response object when saving or updating a protocol
    ProtocolPreviewDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the protocol
          format: int32
        name:
          type: string
          description: The name of the protocol
          nullable: true
        steps:
          type: array
          items:
            $ref: '#/components/schemas/StepPreviewDto'
          description: The list of steps
          nullable: true
        labwares:
          type: array
          items:
            $ref: '#/components/schemas/LabwarePreviewDto'
          description: The list of labware used in the protocol
          nullable: true
        deckPositions:
          type: array
          items:
            $ref: '#/components/schemas/DeckPositionPreviewDto'
          description: The list of deck positions
          nullable: true
        isValid:
          type: boolean
          description: >-
            The flag determining if the protocol is valid (has been verified to
            run)
      additionalProperties: false
      description: The protocol definition preview data
    ProtocolRenamePutDto:
      type: object
      properties:
        newName:
          type: string
          description: The new name of the protocol
          nullable: true
      additionalProperties: false
      description: The object used for renaming protocols
    ProtocolRunStates:
      enum:
        - Idle
        - Scheduling
        - Scheduled
        - Loading
        - Running
        - Pausing
        - Paused
        - Aborting
        - Reloading
        - ErrorHandling
      type: integer
      format: int32
    ProtocolSaveAsPutDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id of the protocol to copy
          format: int32
        saveAsName:
          type: string
          description: The new name for the copied protocol, should be unique
          nullable: true
      additionalProperties: false
      description: The object used for making a copy of a protocol with a new name
    ProtocolSummaryDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the protocol
          format: int32
        name:
          type: string
          description: The name of the protocol
          nullable: true
        favorite:
          type: boolean
          description: Whether or not the protocol is a user favorite
        dateModified:
          type: string
          description: The date the protocol was modified last
          format: date-time
        dateRun:
          type: string
          description: The date the protocol was last run
          format: date-time
      additionalProperties: false
      description: The protocol summary object
    ProtocolValidationResultDto:
      type: object
      properties:
        isValid:
          type: boolean
          description: Check in the protocol is valid
        validationErrors:
          type: array
          items:
            type: string
          description: The validation errors, will be empty if isValid is true
          nullable: true
      additionalProperties: false
      description: The protocol validation result object
    ProtocolVerifyDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the protocol
          format: int32
        name:
          type: string
          description: The name of the protocol
          nullable: true
        deckPositions:
          type: array
          items:
            $ref: '#/components/schemas/DeckPositionVerifyDto'
          description: The deck positions which have been verified
          nullable: true
      additionalProperties: false
      description: The protocol verification object
    PVKCommonInfo:
      type: object
      properties:
        date:
          type: string
          nullable: true
        instrumentName:
          type: string
          nullable: true
        location:
          type: string
          nullable: true
        operator:
          type: string
          nullable: true
        verificationReason:
          type: string
          nullable: true
        reportFile:
          type: string
          nullable: true
        serialNumber:
          type: string
          nullable: true
        softwareVersion:
          type: string
          nullable: true
        temperature:
          type: string
          nullable: true
        humidity:
          type: string
          nullable: true
        time:
          type: string
          nullable: true
        validUntil:
          type: string
          nullable: true
      additionalProperties: false
    PVKReport:
      type: object
      properties:
        commonInfo:
          $ref: '#/components/schemas/PVKCommonInfo'
        equipmentGroups:
          type: array
          items:
            $ref: '#/components/schemas/EquipmentInfoGroup'
          nullable: true
        verificationRunIds:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        measurementGroup:
          type: array
          items:
            $ref: '#/components/schemas/MeasurementGroup'
          nullable: true
        channelAxisOffsets:
          type: array
          items:
            $ref: '#/components/schemas/ChannelAxisOffset'
          nullable: true
        position:
          $ref: '#/components/schemas/Position'
        hhsVerificationData:
          $ref: '#/components/schemas/VerificationDataHhs'
        hhcVerificationData:
          $ref: '#/components/schemas/VerificationDataHhc'
        uvVerificationData:
          $ref: '#/components/schemas/VerificationDataUV'
        independentVolumeMeasurements:
          type: array
          items:
            $ref: '#/components/schemas/Independent'
          nullable: true
        mphVolumeMeasurements:
          type: array
          items:
            $ref: '#/components/schemas/MPH'
          nullable: true
        reportType:
          $ref: '#/components/schemas/VerificationType'
        result:
          type: string
          nullable: true
        saveToDB:
          type: boolean
        title:
          type: string
          nullable: true
        digitalSignature:
          $ref: '#/components/schemas/DigitalSignatureInfo'
        camera:
          $ref: '#/components/schemas/VerificationDataCamera'
      additionalProperties: false
    ReagentFromFileStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        liquidName:
          type: string
          description: The name of the liquid
          nullable: true
        fileName:
          type: string
          description: The name of the file used for reagent from file step
          nullable: true
        filePath:
          type: string
          description: The path of the file used for reagent from file step
          nullable: true
        fileContents:
          type: string
          description: The content of the file used for reagent from file step
          nullable: true
        channelSelection:
          type: string
          description: >-
            The channel used to perform the reagent from file step. Options are
            OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareGroupId:
          type: integer
          description: The tip labware group
          format: int32
        liquidLabwareGroupId:
          type: integer
          description: The liquid labware group
          format: int32
        fileSpecifiesTargets:
          type: boolean
          description: Whether or not the file specifies volumes
        fileSpecifiesVolumes:
          type: boolean
          description: Whether or not the file specifies volumes
        useSameFile:
          type: boolean
          description: Whether or not the saved file should be used
        followWorklistOrder:
          type: boolean
          description: Whether or not the pipette order will follow the worklist order
        newTipsEachTransfer:
          type: boolean
          description: Whether or not new tips should be used for each transfer
        mixBeforeAspirate:
          type: boolean
          description: Enable mixing before aspirating from the sources
        mixAfterDispense:
          type: boolean
          description: Enable mixing after dispensing to the targets
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        destinations:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The destination targets
          nullable: true
        liquidType:
          type: string
          description: The liquid type
          nullable: true
        tipLabwareDisplayName:
          type: string
          description: The display name for the tip labware
          nullable: true
        customizeLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        destinationLocationMethod:
          type: string
          description: The targets location method, options are deck or barcode
          nullable: true
      additionalProperties: false
    ReplicateSampleAddressDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the replicate sample address
          format: int32
        position:
          type: integer
          description: The destination position id
          format: int32
        row:
          type: integer
          description: The destination row
          format: int32
        column:
          type: integer
          description: The destination column
          format: int32
      additionalProperties: false
    ReplicateSamplesStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        channelSelection:
          type: string
          description: >-
            The channel used to perform the normalization step. Options are
            OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareGroupId:
          type: integer
          description: The labware group for the tips to use
          format: int32
        tipLabwareDisplayName:
          type: string
          description: The tip labware name used for displaying
          nullable: true
        liquidType:
          type: string
          description: The liquid type
          nullable: true
        newTipsEachTransfer:
          type: boolean
          description: >-
            Whether or not new tips should be used for each aspirate-dispense
            sequence
        mixBeforeAspirate:
          type: boolean
          description: Enabling or disabling mixing before the aspirate
        mixAfterDispense:
          type: boolean
          description: Enabling or disabling mixing after the dispense
        multiDispense:
          type: boolean
          description: Enabling or disabling multi-dispense (aliquots)
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        multiDispenseSettings:
          $ref: '#/components/schemas/MultiDispenseSettingsDto'
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        wellAssignments:
          type: array
          items:
            $ref: '#/components/schemas/ReplicateSampleWellAssignmentDto'
          description: The target well assignments
          nullable: true
        customizeLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
      additionalProperties: false
    ReplicateSampleWellAssignmentDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the sample well assignment
          format: int32
        sourcePosition:
          type: integer
          description: The source position id
          format: int32
        sourceRow:
          type: integer
          description: The source row
          format: int32
        sourceColumn:
          type: integer
          description: The source column
          format: int32
        destinations:
          type: array
          items:
            $ref: '#/components/schemas/ReplicateSampleAddressDto'
          description: The destinations for the source to go to
          nullable: true
      additionalProperties: false
    ReportDataResponse:
      type: object
      properties:
        pvkReport:
          $ref: '#/components/schemas/PVKReport'
      additionalProperties: false
      description: The response object when requesting report data
    ReportSettingsDto:
      type: object
      properties:
        savePdf:
          type: boolean
          description: >-
            Whether the PDF report should be saved to the specified path upon
            protocol completion.
        saveJson:
          type: boolean
          description: >-
            Whether the Json report data should be saved to the specified path
            upon protocol completion.
        savePipettingCsv:
          type: boolean
          description: >-
            Whether the pipetting csv data should be saved to the specified path
            upon protocol completion.
        pipettingCsvPerStep:
          type: boolean
          description: >-
            Whether the pipetting data should be split into separate csv files
            per step.
        reportPath:
          type: string
          description: The path to save the pipette report to
          nullable: true
      additionalProperties: false
    RequiredService:
      type: object
      properties:
        isRunning:
          type: boolean
        isServiceFailure:
          type: boolean
        serviceName:
          type: string
          nullable: true
        serviceViewName:
          type: string
          nullable: true
      additionalProperties: false
    ResidualTipDataDto:
      type: object
      properties:
        useAllAddresses:
          type: boolean
          description: Flag to specify using all address on the tip rack
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/AddressDto'
          description: User specified positions which contain tips
          nullable: true
      additionalProperties: false
      description: The tip assignment for a given tip rack
    ResidualTipItemDto:
      type: object
      properties:
        deckPosition:
          type: integer
          description: The deck position
          format: int32
        residualTipData:
          $ref: '#/components/schemas/ResidualTipDataDto'
      additionalProperties: false
      description: The residual tip information
    ResultErrorDto:
      type: object
      properties:
        description:
          type: string
          description: The error description
          nullable: true
        resultErrors:
          type: array
          items:
            type: string
          description: The error messages
          nullable: true
      additionalProperties: false
      description: The error result object
    Role:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
          nullable: true
      additionalProperties: false
    RoleDto:
      type: object
      properties:
        id:
          type: string
          description: The instinct id of the role
          nullable: true
        name:
          type: string
          description: The name of the role
          nullable: true
        description:
          type: string
          description: The description of the role
          nullable: true
          readOnly: true
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/PermissionDto'
          description: The associated permissions for the role
          nullable: true
      additionalProperties: false
      description: The role object for a user
    RoutineRunDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the verification run
          format: int32
        routineId:
          type: integer
          description: The database id for the routine
          format: int32
        routineName:
          type: string
          description: The name of the routine
          nullable: true
        result:
          $ref: '#/components/schemas/VerificationRunResult'
        isServiceRoutine:
          type: boolean
          description: If the routine is a service Routine
        dependencyCheckFailed:
          type: boolean
      additionalProperties: false
      description: The routine run retrieved
    RtsaSelection:
      type: object
      properties:
        targets:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTarget'
          nullable: true
      additionalProperties: false
    RtsaSelectionDto:
      type: object
      properties:
        stepId:
          type: integer
          description: The database id of the step to apply the runtime sample assignment
          format: int32
        targets:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The target sample locations
          nullable: true
      additionalProperties: false
      description: The run-time sample assignment selection
    RtsaStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        message:
          type: string
          description: Runtime sample assignment message
          nullable: true
        targets:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: >-
            The targets where the samples should be assigned when running a
            protocol
          nullable: true
      additionalProperties: false
    RunDataDto:
      type: object
      properties:
        id:
          type: string
          description: The database id of the run data
          nullable: true
        runReportFileName:
          type: string
          description: The run report file name
          nullable: true
        userName:
          type: string
          description: The name of the user that ran the protocol
          nullable: true
        protocolName:
          type: string
          description: The protocol name that was run
          nullable: true
        softwareVersion:
          type: string
          description: The software version present when the protcol was ran
          nullable: true
        deviceSerialNumber:
          type: string
          description: The serial number of the device that the protocol was ran on
          nullable: true
        enclosureStatus:
          type: string
          description: The status of the enclosure
          nullable: true
        startTime:
          type: string
          description: The date time of when the protocol ran
          format: date-time
        endTime:
          type: string
          description: The end date time of when the protocol ran
          format: date-time
        runResult:
          type: string
          description: The result of the run
          nullable: true
        errorMessages:
          type: array
          items:
            $ref: '#/components/schemas/ErrorMessage'
          description: The list of error messages that occurred during the run
          nullable: true
        pauses:
          type: array
          items:
            $ref: '#/components/schemas/Pause'
          description: The list of pauses that occurred during the run
          nullable: true
        runtimeSteps:
          type: array
          items:
            $ref: '#/components/schemas/RuntimeStep'
          description: The list of steps that ran
          nullable: true
        stepOverviews:
          type: array
          items:
            $ref: '#/components/schemas/StepOverview'
          description: The list additional information for each step
          nullable: true
        plateTransports:
          type: array
          items:
            $ref: '#/components/schemas/PlateTransport'
          description: The list of plate transports that were run
          nullable: true
        rtsaSelections:
          type: array
          items:
            $ref: '#/components/schemas/RtsaSelection'
          description: The list of rtsa Selections
          nullable: true
        liquidOverviews:
          type: array
          items:
            $ref: '#/components/schemas/LiquidOverview'
          description: The list of liquids used during the run
          nullable: true
        tubeOverviews:
          type: array
          items:
            $ref: '#/components/schemas/TubeOverview'
          description: The list of tubes used during the run
          nullable: true
        doorStatusEvents:
          type: array
          items:
            $ref: '#/components/schemas/DoorEvent'
          description: The list of door status events that occurred during the run
          nullable: true
        thermalDevice:
          type: string
          description: The configured thermal device, if any.
          nullable: true
        labwareItems:
          type: array
          items:
            $ref: '#/components/schemas/RuntimeLabwareItem'
          description: The list of labware
          nullable: true
        runtimeLightingSettings:
          $ref: '#/components/schemas/LightingSettings'
        hepaOverview:
          $ref: '#/components/schemas/HepaOverview'
        unmappedPipetteActivities:
          type: array
          items:
            $ref: '#/components/schemas/PipetteActivity'
          description: >-
            Any pipette activities from the protocol that could not be
            associated with a step
          nullable: true
        pipetteDataAvailable:
          type: boolean
          description: Indicates if pipette data is still available for this run
          readOnly: true
      additionalProperties: false
      description: >-
        The run data collected, including run report file information, error
        messages and other events
    RunProtocolDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id for the protocol to run
          format: int32
        simulate:
          type: boolean
          description: Flag indicating whether to run it in simulation mode or not
        recompile:
          type: boolean
          description: Flag indicating whether to force verification of the protocol
      additionalProperties: false
      description: The protocol run request object
    RunStatusChangedResult:
      type: object
      properties:
        hasError:
          type: boolean
        error:
          type: string
          nullable: true
      additionalProperties: false
    RunStatusDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id for the protocol
          format: int32
        runDatalId:
          type: string
          description: The database id for the protocol run data
          nullable: true
        isRunInProgress:
          type: boolean
          description: Flag indicating whether or not a run is in progress
          readOnly: true
        isSimulation:
          type: boolean
          description: Flag indicating whether or not the run is a simulation
          readOnly: true
        protocolRunState:
          $ref: '#/components/schemas/ProtocolRunStates'
        startTime:
          type: string
          description: The start time for the running protocol
          format: date-time
        estimatedEndTime:
          type: string
          description: The estimated end time for the running protocol
          format: date-time
        endPauseTime:
          type: string
          description: The estimated end time for a pause in the running protocol
          format: date-time
        protocolName:
          type: string
          description: The name of the protocol
          nullable: true
          readOnly: true
        currentStep:
          type: integer
          description: The current index of the running step in the protocol
          format: int32
          readOnly: true
        preLoadThermalDeviceUsed:
          $ref: '#/components/schemas/ThermalDevice'
        preLoadHepaFiltration:
          type: boolean
          description: >-
            Flag indicating whether or not hepa filtration is used prior to
            loading
          readOnly: true
      additionalProperties: false
      description: The run status for a protocol
    RuntimeError:
      type: object
      properties:
        id:
          type: string
          nullable: true
        selectedResponse:
          type: string
          nullable: true
      additionalProperties: false
    RuntimeGroupError:
      type: object
      properties:
        id:
          type: string
          nullable: true
        groupId:
          type: string
          nullable: true
        errorData:
          type: array
          items:
            $ref: '#/components/schemas/RuntimeError'
          nullable: true
        selectedResponse:
          type: string
          nullable: true
      additionalProperties: false
    RuntimeLabwareItem:
      type: object
      properties:
        deckPosition:
          type: integer
          format: int32
        deckPositionName:
          type: string
          nullable: true
        labwarePosition:
          type: integer
          format: int32
        tubeUnitPosition:
          $ref: '#/components/schemas/TubeUnitPosition'
        labwarePositionColumn:
          type: integer
          format: int32
        labwarePositionRow:
          type: integer
          format: int32
        barcode:
          type: string
          nullable: true
        liquidName:
          type: string
          nullable: true
        liquidType:
          type: string
          nullable: true
        labwareName:
          type: string
          nullable: true
        labwareClassificationName:
          type: string
          nullable: true
          readOnly: true
        labwareDisplayName:
          type: string
          nullable: true
        positionStatus:
          type: string
          nullable: true
        reuseTipsBetweenSteps:
          type: boolean
      additionalProperties: false
    RuntimeStep:
      type: object
      properties:
        name:
          type: string
          nullable: true
        stepOrder:
          type: integer
          format: int32
        stepNumber:
          type: integer
          format: int32
        stepTypeName:
          type: string
          nullable: true
          readOnly: true
        stepStart:
          type: string
          format: date-time
          nullable: true
        stepEnd:
          type: string
          format: date-time
          nullable: true
        isPipettingStep:
          type: boolean
          readOnly: true
        pipetteActivities:
          type: array
          items:
            $ref: '#/components/schemas/PipetteActivity'
          nullable: true
      additionalProperties: false
    SaveAsLiquidDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the liquid
          nullable: true
        settings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        classSpec:
          $ref: '#/components/schemas/LiquidClassSpecDto'
      additionalProperties: false
      description: A save as object used for making copies of liquid types
    SaveLiquidDto:
      type: object
      properties:
        settings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        classSpec:
          $ref: '#/components/schemas/LiquidClassSpecDto'
      additionalProperties: false
      description: >-
        The object used to save the liquid class settings. It is a key (specs)
        value (settings) relationship
    ScreenshotFileDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the screenshot file
          nullable: true
        createdDateTime:
          type: string
          description: The date it was created
          format: date-time
      additionalProperties: false
      description: The screenshot file
    SensorStatesDto:
      type: object
      properties:
        isEnclosurePresent:
          type: boolean
        isDoorClosed:
          type: boolean
        isXHome:
          type: boolean
        fan1Rpm:
          type: integer
          format: int32
        fan2Rpm:
          type: integer
          format: int32
        mphSensorState:
          $ref: '#/components/schemas/MphSensorState'
        independentChannelsSensorState:
          $ref: '#/components/schemas/IndependentChannelsSensorState'
      additionalProperties: false
    SerialDilutionStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        channelSelection:
          type: string
          description: >-
            The channel used to perform the normalization step. Options are
            OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        addDiluentMixBeforeAspirate:
          type: boolean
          description: Enable mixing in the the diluent source before aspirating
        addDiluentMixAfterDispense:
          type: boolean
          description: Enable mixing in the destination well after dispensing the diluent
        addDiluentAspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        addDiluentDispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        addDiluentNewTipsEachTransfer:
          type: boolean
          description: Whether or not to use new tips for each tranfer of the diluent
        addDiluentTipDiscardLocation:
          type: string
          description: >-
            Where diluent used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        addDiluentTipLabwareName:
          type: string
          description: The name of the tips used for the diluent adding step
          nullable: true
        addDiluentTipLabwareGroupId:
          type: integer
          description: The tips group used for the diluent adding step
          format: int32
        liquidLabwareGroupId:
          type: integer
          description: The liquid group used for the diluent adding step
          format: int32
        addDiluentMultiDispense:
          type: boolean
        addDiluentMultiDispenseSettings:
          $ref: '#/components/schemas/MultiDispenseSettingsDto'
        addSamplesAspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        addSamplesDispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        addSamplesMixBeforeAspirate:
          type: boolean
          description: Enable mixing in the sample source well before aspirating
        addSamplesMixAfterDispense:
          type: boolean
          description: >-
            Enable mixing after dispensing when transfering the sample in the
            destination target
        addSamplesNewTipsEachTransfer:
          type: boolean
          description: Whether or not to use new tips for each tranfer of the samples
        addSamplesTipDiscardLocation:
          type: string
          description: >-
            Where samples used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        addSamplesTipLabwareName:
          type: string
          description: The name of the tips used for the sample adding step
          nullable: true
        addSamplesTipLabwareGroupId:
          type: integer
          description: The tips group used for the samples adding step
          format: int32
        addSamplesLiquidType:
          type: string
          description: The liquid type of the samples
          nullable: true
        dilutionAspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dilutionDispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        dilutionMixBeforeAspirate:
          type: boolean
          description: Enable mixing in the dilution series before aspirating
        dilutionMixAfterDispense:
          type: boolean
          description: Enable mixing in the dilution series after dispensing
        dilutionNewTipsEachTransfer:
          type: boolean
          description: Whether or not to use new tips for each dilution in the series
        dilutionTipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to during the serial dilution.
            Possible options are DiscardToWaste, ReturnToRack,
            ReuseForSamplesAndDilution
          nullable: true
        dilutionTipLabwareName:
          type: string
          description: The name of the tips to use for the serial dilution step
          nullable: true
        dilutionTipLabwareGroupId:
          type: integer
          description: The tip group to use for the serial dilution step
          format: int32
        dilutionLiquidType:
          type: string
          description: The liquid type to use during the serial dilution step
          nullable: true
        dilutionTargets:
          type: array
          items:
            $ref: '#/components/schemas/DilutionTargetDto'
          description: The dilution targets
          nullable: true
        dilutions:
          type: array
          items:
            $ref: '#/components/schemas/DilutionDto'
          description: The definitions of how to do the dilutions
          nullable: true
        diluent:
          $ref: '#/components/schemas/LiquidTypeDto'
        calculateWithFactors:
          type: boolean
          description: Whether or not the dilution should be calculated using the factors
        discardExcess:
          type: boolean
          description: >-
            Whether or not the excess on the last dilution step should be
            discared to liquid waste
        pipetteDiluent:
          type: boolean
          description: >-
            Whether or not the diluent should be pipetted (if false, the
            assumption is that the diluent is already in the destination)
        firstDilutionInSample:
          type: boolean
          description: "Whether or not the dilution should start in the sample location \r\n(typically this is used when the sample is already on the destination plate)"
        differentVolumes:
          type: boolean
          description: >-
            Whether or not the volumes for the dilution are different for each
            dilution step
        samples:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The locations of the samples to be diluted
          nullable: true
        customizeAddSamplesLiquid:
          type: boolean
          description: >-
            The option for enabling using the custom liqud settings for the add
            samples step
        customAddSamplesLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        customizeAddDiluentLiquid:
          type: boolean
          description: >-
            The option for enabling using the custom liqud settings for the add
            diluent step
        customAddDiluentLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
        customizeDilutionLiquid:
          type: boolean
          description: >-
            The option for enabling using the custom liqud settings for the
            dilution step
        customDilutionLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
      additionalProperties: false
    ServiceRoutineDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the service routine
          format: int32
        name:
          type: string
          description: The name for the service routine
          nullable: true
        isRecommended:
          type: boolean
          description: Whether or not the service routine is currently recommended
        lastRun:
          type: string
          description: The date the service routine was last run
          format: date-time
          nullable: true
      additionalProperties: false
      description: The service routine
    Setting:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        dataType:
          type: string
          nullable: true
        currentValue:
          type: string
          nullable: true
        rangeStart:
          type: string
          nullable: true
        rangeEnd:
          type: string
          nullable: true
        enumValidValues:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    SettingUpdateDto:
      type: object
      properties:
        categoryId:
          type: string
          description: The category id of the setting
          nullable: true
        settingId:
          type: string
          description: The id of the setting
          nullable: true
        value:
          type: string
          description: The value the setting should be set to
          nullable: true
      additionalProperties: false
      description: The system settings update object
    ShowRuntimeErrors:
      enum:
        - Always
        - ExceedsMaxErrors
        - Never
        - ValuesNotGiven
      type: integer
      format: int32
    SimulationSpeedDto:
      type: object
      properties:
        simulationSpeed:
          type: string
          description: >-
            The desired simulation speed, options are Slow, Normal, Fast,
            VeryFast, Ludicrous, Unknown
          nullable: true
      additionalProperties: false
      description: The object used to specify the desired speed of a simulated run
    Site:
      type: object
      properties:
        siteName:
          type: string
          nullable: true
        channels:
          type: array
          items:
            $ref: '#/components/schemas/Channel'
          nullable: true
      additionalProperties: false
    SoftwareSettingsDto:
      type: object
      properties:
        hideKeyboard:
          type: boolean
          description: Hide or make the onscreen keyboard visible
        generateRunReport:
          type: boolean
          description: >-
            Whether or not a run report should be generated at the end of
            running a protocol
        allowRedWarningOverride:
          type: boolean
          description: >-
            Whether or not errors during the camera verification of a protocol
            can be overrided
        defaultAmbientTemperature:
          type: integer
          description: The default ambient temperature (used for heat operations)
          format: int32
      additionalProperties: false
      description: The software settings
    SoftwareVersion:
      type: object
      properties:
        name:
          type: string
          nullable: true
        version:
          type: string
          nullable: true
      additionalProperties: false
    StepDisablePutDto:
      type: object
      properties:
        disabled:
          type: boolean
          description: Enable or disable a step
      additionalProperties: false
    StepGetDto:
      required:
        - name
      type: object
      properties:
        stepType:
          type: string
          description: "The step type discriminator. Possible values are AddReagentStep, ReplicateSamplesStep,\r\nTransferSamplesStep, HeatShakeStep, PauseStep, HitPickingStep, SerialDilutionStep, RtsaStep, BarcodeStep, TransportStep\r\nNormalizationStep, ReagentFromFileStep, LightingStep, HeatCoolStep, LidStep, and HepaStep"
          nullable: true
          readOnly: true
        id:
          type: integer
          description: The id of the step
          format: int32
          readOnly: true
        name:
          type: string
          description: The name of the step
          readOnly: true
        stepOrder:
          type: integer
          description: The order where the step is in a protocol
          format: int32
          readOnly: true
        disabled:
          type: boolean
          description: Whether the step is disabled or not
          readOnly: true
      additionalProperties: false
    StepOverview:
      type: object
      properties:
        order:
          type: integer
          format: int32
        stepName:
          type: string
          nullable: true
        stepNumber:
          type: integer
          format: int32
        stepOverviewItems:
          type: array
          items:
            $ref: '#/components/schemas/StepOverviewItem'
          nullable: true
          readOnly: true
      additionalProperties: false
    StepOverviewItem:
      type: object
      properties:
        order:
          type: integer
          format: int32
        label:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
      additionalProperties: false
    StepPostPutDto:
      required:
        - name
      type: object
      properties:
        stepType:
          type: string
          nullable: true
        id:
          type: integer
          format: int32
        name:
          type: string
        stepOrder:
          type: integer
          format: int32
        makeNameUnique:
          type: boolean
        disabled:
          type: boolean
      additionalProperties: false
    StepPreviewDto:
      type: object
      properties:
        name:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        imagePath:
          type: string
          nullable: true
      additionalProperties: false
    StepRenamePutDto:
      type: object
      properties:
        newName:
          type: string
          description: New name of a step
          nullable: true
      additionalProperties: false
    StepReorder:
      type: object
      properties:
        stepId:
          type: integer
          format: int32
        stepOrder:
          type: integer
          format: int32
      additionalProperties: false
    SubmitBarcodeDto:
      type: object
      properties:
        protocolId:
          type: integer
          description: The database id of the protocol
          format: int32
        barcodes:
          type: array
          items:
            $ref: '#/components/schemas/BarcodeTargetDto'
          description: The assigned barcodes for the specified locations
          nullable: true
      additionalProperties: false
      description: The barcode submition for a protocol to run
    SupportedEnum:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
        displayName:
          type: string
          nullable: true
      additionalProperties: false
    SupportedHhcAdapter:
      type: object
      properties:
        cornerLocatorsRequirement:
          $ref: '#/components/schemas/CornerLocatorsRequirement'
        id:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
        displayName:
          type: string
          nullable: true
      additionalProperties: false
    SystemTimeZoneDto:
      type: object
      properties:
        utcOffsetHours:
          type: integer
          description: The UTC offset hours
          format: int32
        utcOffsetMinutes:
          type: integer
          description: The UTC Offset minutes
          format: int32
        displayName:
          type: string
          description: The display name
          nullable: true
        id:
          type: string
          description: The id of the time zone
          nullable: true
        supportsDst:
          type: boolean
          description: If the timezone uses daylight savings time
      additionalProperties: false
      description: System time zone
    ThermalDevice:
      enum:
        - Hhs
        - Hhc
        - None
      type: integer
      format: int32
    TimeGetDto:
      type: object
      properties:
        year:
          type: integer
          description: The year in yyyy format
          format: int32
        month:
          type: integer
          description: The month
          format: int32
        day:
          type: integer
          description: The day
          format: int32
        dayOfWeek:
          type: string
          description: The day of the week
          nullable: true
        hours:
          type: integer
          description: 24 hour time 0-23
          format: int32
        minutes:
          type: integer
          description: Minutes 0-59
          format: int32
        seconds:
          type: integer
          description: Seconds 0-59
          format: int32
      additionalProperties: false
      description: The liquid type usage over protocols
    TimeSetDto:
      type: object
      properties:
        year:
          type: integer
          description: The year in yyyy format
          format: int32
        month:
          type: integer
          description: The month
          format: int32
        day:
          type: integer
          description: The day
          format: int32
        hours:
          type: integer
          description: 24 hour time 0-23
          format: int32
        minutes:
          type: integer
          description: Minutes 0-59
          format: int32
        seconds:
          type: integer
          description: Seconds 0-59
          format: int32
        timeZoneId:
          type: string
          description: The id of the time zone
          nullable: true
      additionalProperties: false
      description: The liquid type usage over protocols
    TipLoadPositionDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/DeckLoadPositionDto'
      properties:
        count:
          type: integer
          format: int32
        suggestedCount:
          type: integer
          format: int32
        residualTipData:
          $ref: '#/components/schemas/ResidualTipDataDto'
      additionalProperties: false
      description: Deck position information
    TipPickupDiagnosticPutDto:
      type: object
      properties:
        channelSelection:
          type: string
          description: >-
            The channels used to perform the pressure diagnostic. Possible
            values are OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareId:
          type: integer
          description: The labware id of the tips to use
          format: int32
        deckPosition:
          type: integer
          description: The position id where the tip rack is located
          format: int32
        ejectToWaste:
          type: boolean
          description: Option to eject tips to waste or return them back to the tip rack
      additionalProperties: false
      description: The tip pick up diagnostic test
    TransferSamplesStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        channelSelection:
          type: string
          description: >-
            The channels used to perform the transfer samples step. Possible
            values are OneChannel, TwoChannel, EightChannel, or Unknown
          nullable: true
        tipLabwareGroupId:
          type: integer
          description: The labware tip group to use
          format: int32
        liquidType:
          type: string
          description: The liquid type
          nullable: true
        newTipsEachTransfer:
          type: boolean
          description: >-
            Whether or not new tips should be used for each aspirate-dispense
            sequence
        mixBeforeAspirate:
          type: boolean
          description: Enabling or disabling mixing before the aspirate
        mixAfterDispense:
          type: boolean
          description: Enabling or disabling mixing after the dispense
        tipReuseOption:
          type: string
          description: >-
            Option of how tips should be reused. Possible options are PerSample,
            PerReplica, PerPool, PerTransfer
          nullable: true
        tipDiscardLocation:
          type: string
          description: >-
            Where used tips should be discarded to. Possible options are
            DiscardToWaste, ReturnToRack, ReuseForSamplesAndDilution
          nullable: true
        dispenseToWaste:
          type: boolean
          description: >-
            Enabling this will cause destinations to be ignored, the dispenses
            will occur in the liquid waste location
        aspirateSettings:
          $ref: '#/components/schemas/AspirateSettingsDto'
        dispenseSettings:
          $ref: '#/components/schemas/DispenseSettingsDto'
        sources:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The sample sources
          nullable: true
        destinations:
          type: array
          items:
            $ref: '#/components/schemas/PipetteTargetDto'
          description: The destinations of where to put the samples
          nullable: true
        customizeLiquid:
          type: boolean
          description: The option for enabling using the custom liqud settings
        customLiquidSettings:
          $ref: '#/components/schemas/LiquidSettingsDto'
      additionalProperties: false
    TransportDiagnosticPutDto:
      type: object
      properties:
        plateLabwareId:
          type: integer
          description: The plate labware id to transport
          format: int32
      additionalProperties: false
      description: The plate transport diagnostic test
    TransportStepGetDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/StepGetDto'
      properties:
        startPosition:
          type: integer
          description: The position id of the labware to be transported from
          format: int32
        endPosition:
          type: integer
          description: The position id where the labware should be transported to
          format: int32
      additionalProperties: false
    TroughLoadPositionDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/DeckLoadPositionDto'
      properties:
        liquidName:
          type: string
          nullable: true
        maximumVolume:
          type: integer
          format: int64
        requiredVolume:
          type: integer
          format: int64
        residualVolume:
          type: integer
          format: int64
        suggestedVolume:
          type: integer
          format: int64
        userRequestedVolume:
          type: integer
          format: int64
        unitType:
          type: string
          nullable: true
      additionalProperties: false
      description: Deck position information
    TubeLoadPositionDto:
      type: object
      allOf:
        - $ref: '#/components/schemas/DeckLoadPositionDto'
      properties:
        carrierRow:
          type: integer
          format: int32
        carrierColumn:
          type: integer
          format: int32
        liquidName:
          type: string
          nullable: true
        maximumVolume:
          type: integer
          format: int64
        requiredVolume:
          type: integer
          format: int64
        residualVolume:
          type: integer
          format: int64
        suggestedVolume:
          type: integer
          format: int64
        userRequestedVolume:
          type: integer
          format: int64
      additionalProperties: false
      description: Deck position information
    TubeOverview:
      type: object
      properties:
        deckPositionName:
          type: string
          nullable: true
        deckPosition:
          type: string
          nullable: true
        tubeDisplayName:
          type: string
          nullable: true
        locations:
          type: array
          items:
            $ref: '#/components/schemas/TubeOverviewLocation'
          nullable: true
          readOnly: true
      additionalProperties: false
    TubeOverviewLocation:
      type: object
      properties:
        positionColumn:
          type: integer
          format: int32
        positionRow:
          type: integer
          format: int32
      additionalProperties: false
    TubeUnitPosition:
      type: object
      properties:
        unitNumber:
          type: integer
          format: int32
        deckColumn:
          type: integer
          format: int32
      additionalProperties: false
    UniqueNameGetDto:
      type: object
      properties:
        uniqueName:
          type: string
          description: The unique name
          nullable: true
      additionalProperties: false
      description: A unique name generated for a protocol
    UpdateLabwareSignatureDto:
      type: object
      properties:
        labwareId:
          type: integer
          description: The id of the labware
          format: int32
        positionId:
          type: integer
          description: The deck position id
          format: int32
      additionalProperties: false
      description: The visual labware signature update object
    UpdatePasswordDto:
      type: object
      properties:
        userId:
          type: string
          description: The instinct id of the user
          nullable: true
        userName:
          type: string
          description: The user name
          nullable: true
        oldPassword:
          type: string
          description: The old password
          nullable: true
        newPassword:
          type: string
          description: The new password
          nullable: true
      additionalProperties: false
      description: The password update request object
    UserCreateDto:
      type: object
      properties:
        firstName:
          type: string
          description: The user's first name
          nullable: true
        lastName:
          type: string
          description: The user's last name
          nullable: true
        username:
          type: string
          description: The user name
          nullable: true
        email:
          type: string
          description: The user's email address
          nullable: true
        password:
          type: string
          description: The user's password
          nullable: true
        role:
          $ref: '#/components/schemas/Role'
        id:
          type: string
          description: The user's instinct assigned id
          nullable: true
        locked:
          type: boolean
          description: Whether or not the user should be locked
        phone:
          type: string
          description: The user's phone number
          nullable: true
        passwordExpireDate:
          type: string
          description: The user's password expiration date
          format: date-time
          nullable: true
        userKbaItems:
          type: array
          items:
            $ref: '#/components/schemas/UserKbaItem'
          description: The user's knowledge-based authentication questions
          nullable: true
      additionalProperties: false
      description: The user creation object
    UserDto:
      type: object
      properties:
        firstName:
          type: string
          description: The user's first name
          nullable: true
        lastName:
          type: string
          description: The user's last name
          nullable: true
        username:
          type: string
          description: The user name
          nullable: true
        email:
          type: string
          description: The user's email address
          nullable: true
        phone:
          type: string
          description: The user's password expiration date
          nullable: true
        role:
          $ref: '#/components/schemas/RoleDto'
        id:
          type: string
          description: The user's instinct assigned id
          nullable: true
        locked:
          type: boolean
          description: Whether or not the user should be locked
        passwordExpireDate:
          type: string
          description: The user's password expiration date
          format: date-time
          nullable: true
      additionalProperties: false
      description: The user object
    UserKbaItem:
      type: object
      properties:
        id:
          type: integer
          format: int32
        userName:
          type: string
          nullable: true
        question:
          type: string
          nullable: true
        answer:
          type: string
          nullable: true
      additionalProperties: false
    UVRoutineInterval:
      enum:
        - EveryProtocolRun
        - Daily
        - Weekly
        - Monthly
        - Disabled
      type: integer
      format: int32
    UVRoutineIntervalSettingOptionsDto:
      type: object
      properties:
        id:
          type: integer
          description: The id of the UV routine interval setting option
          format: int32
        description:
          type: string
          description: The description of the UV routine interval setting option
          nullable: true
        name:
          type: string
          description: The name of the UV routine interval setting option
          nullable: true
      additionalProperties: false
      description: >-
        The object that holds the available UV maintenance routine interval
        setting options
    UVRoutineSettingsDto:
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/UVRoutineInterval'
      additionalProperties: false
      description: The UV maintenance routine settings object
    VerificationAuthenticateDto:
      type: object
      properties:
        password:
          type: string
          description: The service password
          nullable: true
      additionalProperties: false
      description: The verification authentication object
    VerificationConfigurationDto:
      type: object
      properties:
        isServiceContractEnabled:
          type: boolean
          description: Whether or not the service contract is enabled
        contractCycleDays:
          type: integer
          description: The number of days for the service contract cycle
          format: int32
      additionalProperties: false
      description: The number of days for the service contract cycle
    VerificationDataBarcode:
      type: object
      properties:
        upca:
          $ref: '#/components/schemas/VerificationResultBarcode'
        upce:
          $ref: '#/components/schemas/VerificationResultBarcode'
        code128B:
          $ref: '#/components/schemas/VerificationResultBarcode'
        eaN13:
          $ref: '#/components/schemas/VerificationResultBarcode'
        eaN8:
          $ref: '#/components/schemas/VerificationResultBarcode'
        code39:
          $ref: '#/components/schemas/VerificationResultBarcode'
        interleaved2of5:
          $ref: '#/components/schemas/VerificationResultBarcode'
        codabar:
          $ref: '#/components/schemas/VerificationResultBarcode'
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationDataCamera:
      type: object
      properties:
        upperVariance:
          type: integer
          format: int32
        lowerVariance:
          type: integer
          format: int32
        focusPassing:
          type: boolean
        upperVarianceImg:
          type: string
          nullable: true
        lowerVarianceImg:
          type: string
          nullable: true
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationDataHhc:
      type: object
      properties:
        deviceSerialNumber:
          type: string
          nullable: true
        temperatureVerificationList:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDataTemperatureHhc'
          nullable: true
        measurementToolCalibrationExpirationDate:
          type: string
          format: date-time
        measurementToolCalibrationId:
          type: string
          nullable: true
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationDataHhs:
      type: object
      properties:
        deviceSerialNumber:
          type: string
          nullable: true
        temperatureVerificationList:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDataTemperature'
          nullable: true
        orbitTolerance:
          type: number
          format: float
        targetOrbit:
          type: number
          format: float
        measuredOrbit:
          type: number
          format: float
        targetFrequency:
          type: integer
          format: int32
        frequencyTolerance:
          type: integer
          format: int32
        measuredFrequency:
          type: integer
          format: int32
        measurementToolCalibrationExpirationDate:
          type: string
          format: date-time
        measurementToolCalibrationId:
          type: string
          nullable: true
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationDataTemperature:
      type: object
      properties:
        id:
          type: integer
          format: int32
        verificationDataHhsId:
          type: integer
          format: int32
        targetTemperature:
          type: number
          format: double
        outsideToolTemperature:
          type: number
          format: double
        deviceTemperature:
          type: number
          format: double
        timeToReachTemperatureInSeconds:
          type: integer
          format: int32
        allowedTimeToReachTemperatureInSeconds:
          type: integer
          format: int32
        tolerance:
          type: number
          format: double
      additionalProperties: false
    VerificationDataTemperatureHhc:
      type: object
      properties:
        id:
          type: integer
          format: int32
        verificationDataHhcId:
          type: integer
          format: int32
        targetTemperature:
          type: number
          format: double
        outsideToolTemperature:
          type: number
          format: double
        deviceTemperature:
          type: number
          format: double
        timeToReachTemperatureInSeconds:
          type: integer
          format: int32
        allowedTimeToReachTemperatureInSeconds:
          type: integer
          format: int32
        tolerance:
          type: number
          format: double
      additionalProperties: false
    VerificationDataUV:
      type: object
      properties:
        allLEDsOperational:
          type: boolean
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationDevice:
      type: object
      properties:
        id:
          type: integer
          format: int32
        deviceType:
          $ref: '#/components/schemas/VerificationDeviceType'
        calibrationId:
          type: string
          nullable: true
        calibrationExpirationDate:
          type: string
          format: date-time
          nullable: true
        expirationEnabled:
          type: boolean
      additionalProperties: false
    VerificationDeviceDto:
      type: object
      properties:
        deviceType:
          $ref: '#/components/schemas/VerificationDeviceType'
        calibrationId:
          type: string
          description: The S/N or other unique identifier used for this device calibration
          nullable: true
        calibrationExpirationDate:
          type: string
          description: The date the calibration expires, if calibration is enabled
          format: date-time
          nullable: true
        expirationEnabled:
          type: boolean
          description: Determines whether or not the calibration on this device can expire
      additionalProperties: false
      description: The calibration information for a device
    VerificationDeviceType:
      enum:
        - ThermoHygrometer
        - TemperatureSensor
        - Atmos
        - TargetingBlock
      type: integer
      format: int32
    VerificationImportanceDto:
      type: object
      properties:
        verificationGlobalImportance:
          type: integer
          format: int32
        importanceLevels:
          type: array
          items:
            $ref: '#/components/schemas/SupportedEnum'
          nullable: true
          readOnly: true
      additionalProperties: false
    VerificationResult:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        completionDate:
          type: string
          format: date-time
      additionalProperties: false
    VerificationResultBarcode:
      type: object
      properties:
        id:
          type: integer
          format: int32
        expectedResult:
          type: string
          nullable: true
        actualResult:
          type: string
          nullable: true
      additionalProperties: false
    VerificationResultDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the verification item
          nullable: true
        completeionDate:
          type: string
          description: The completion date
          nullable: true
      additionalProperties: false
      description: The verification result
    VerificationRoutineDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the verification routine
          format: int32
        name:
          type: string
          description: The name for the verification routine
          nullable: true
        verificationOrder:
          type: integer
          description: >-
            A number signifying the order to run verification routine with
            respect to other verifications
          format: int32
        dueDate:
          type: string
          description: The date the verification routine is due to be run
          format: date-time
        runs:
          type: array
          items:
            $ref: '#/components/schemas/VerificationRunDto'
          description: >-
            A list of runs for the verification routine on the current
            instrument, ordered by most recent
          nullable: true
        requiredThermalDevice:
          $ref: '#/components/schemas/ThermalDevice'
        requiresHepaUv:
          type: boolean
          description: >-
            A boolean signifying that the HEPAUV device must be present to run
            this verification routine
        verificationDevices:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDevice'
          description: List of required verification devices
          nullable: true
        serviceRoutine:
          $ref: '#/components/schemas/ServiceRoutineDto'
      additionalProperties: false
      description: The verification routine retrieved
    VerificationRun:
      type: object
      properties:
        verificationType:
          $ref: '#/components/schemas/VerificationType'
        instrumentSerialNumber:
          type: string
          nullable: true
        runDate:
          type: string
          format: date-time
        data:
          $ref: '#/components/schemas/VerificationRunData'
        reportFilePath:
          type: string
          nullable: true
        location:
          type: string
          nullable: true
        operator:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
        verificationDevices:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDevice'
          nullable: true
        temperature:
          type: number
          format: double
          nullable: true
        humidity:
          type: number
          format: double
          nullable: true
        id:
          type: integer
          format: int32
        verificationRoutineId:
          type: integer
          format: int32
        result:
          $ref: '#/components/schemas/VerificationRunResult'
        routineName:
          type: string
          nullable: true
          readOnly: true
        isServiceRoutine:
          type: boolean
          readOnly: true
        dependencyCheckFailed:
          type: boolean
      additionalProperties: false
    VerificationRunData:
      type: object
      properties:
        id:
          type: integer
          format: int32
        verificationRunId:
          type: integer
          format: int32
        run:
          $ref: '#/components/schemas/VerificationRun'
        testPassed:
          type: boolean
      additionalProperties: false
    VerificationRunDto:
      type: object
      properties:
        id:
          type: integer
          description: The database id for the verification run
          format: int32
        routineId:
          type: integer
          description: The database id for the verification routine
          format: int32
        verificationType:
          $ref: '#/components/schemas/VerificationType'
        routineName:
          type: string
          description: The name of the verification routine
          nullable: true
          readOnly: true
        runDate:
          type: string
          description: The date the verification run was completed
          format: date-time
        result:
          $ref: '#/components/schemas/VerificationRunResult'
        location:
          type: string
          description: The location the verification was performed
          nullable: true
        operator:
          type: string
          description: The operator name
          nullable: true
        reason:
          type: string
          description: The reason for running the verification routine
          nullable: true
        temperature:
          type: number
          description: The measured temperature
          format: double
          nullable: true
        humidity:
          type: number
          description: The measured humidity
          format: double
          nullable: true
        verificationDevices:
          type: array
          items:
            $ref: '#/components/schemas/VerificationDevice'
          description: The list of verification device information
          nullable: true
      additionalProperties: false
      description: The verification run retrieved
    VerificationRunResult:
      enum:
        - NotStarted
        - Pass
        - Fail
        - Canceled
      type: integer
      format: int32
    VerificationScanResultDto:
      type: object
      properties:
        expectedLabwareId:
          type: integer
          description: >-
            The database id of the labware that is expected to be in the
            position, will be -1 if isExpectedOccupied is false
          format: int32
        isExpectedOccupied:
          type: boolean
          description: >-
            The flag specifying whether the position is expected to be occupied
            or not
        status:
          type: string
          description: >-
            The status of the verification, options are Correct, Missing,
            Incorrect, Occupied, ConfirmationRequired
          nullable: true
        detectedLabwareId:
          type: integer
          description: The database id of the labware determined by the scan
          format: int32
        confidence:
          type: number
          description: The confidence value of the prediction [0,1]
          format: double
        isOccupied:
          type: boolean
          description: The flag specifying if the scan predicted an empty position or not
        positionId:
          type: integer
          description: The position id
          format: int32
        labwareClassification:
          type: string
          description: "The predicted labware classification, Possible values are: Empty, Unknown,\r\nPlate, SampleTube, TubeRack, Trough, TipRack, Carrier, MicroTubeRack, MicroTube, Container, Magnet, VirtualTubeRack, Assembly, Lid, LidCarrier"
          nullable: true
        matches:
          type: array
          items:
            $ref: '#/components/schemas/DeckScanResultDto'
          description: The list of nearest matches sorted by confidence
          nullable: true
        residualTipData:
          $ref: '#/components/schemas/ResidualTipDataDto'
      additionalProperties: false
      description: The verification scan result object for a given position
    VerificationStatusDto:
      type: object
      properties:
        isWorkflowInProgress:
          type: boolean
          description: Flag indicating whether or not a verification run is in progress
        isRunInProgress:
          type: boolean
          description: >-
            Flag indicating whether or not the verification at the current index
            is running
        isServiceRoutineInProgress:
          type: boolean
          description: Flag indicating whether or not there is a service routine running
        startTime:
          type: string
          description: The start time for the active verification run
          format: date-time
        currentIndex:
          type: integer
          description: The verification current index of the verification run
          format: int32
        runs:
          type: array
          items:
            $ref: '#/components/schemas/RoutineRunDto'
          description: The list of verification runs
          nullable: true
        serviceRoutine:
          $ref: '#/components/schemas/ServiceRoutineDto'
      additionalProperties: false
      description: The run status for the current verification run(s)
    VerificationType:
      enum:
        - DoorSensor
        - Position
        - Volume
        - Camera
        - Barcode
        - HHS
        - HHC
        - UV
      type: integer
      format: int32
    ViewClosePostDto:
      type: object
      properties:
        viewId:
          type: string
          description: The id of the view to close
          nullable: true
        viewResult:
          type: string
          description: The result for the view
          nullable: true
        viewInput:
          type: string
          description: The input of the view
          nullable: true
      additionalProperties: false
    ViewPostLabwareDto:
      type: object
      properties:
        viewId:
          type: string
          description: The id of the view to close
          nullable: true
        viewResult:
          type: string
          description: The result for the view
          nullable: true
        labwareId:
          type: string
          description: The labware reference id
          nullable: true
        labwarePosition:
          type: integer
          description: The position id of the labware
          format: int32
      additionalProperties: false
    VisionSystemGetDto:
      type: object
      properties:
        isVisionSystemAvailable:
          type: boolean
          description: Flag to check if the vision system is available
      additionalProperties: false
      description: The vision system information object
    VolumeGroup:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/PrepChannel'
        target:
          type: number
          format: double
        accuracyTolerance:
          type: number
          format: double
        varianceTolerance:
          type: number
          format: double
        mean:
          type: number
          format: double
        accuracy:
          type: number
          format: double
        variance:
          type: number
          format: double
        volumes:
          type: array
          items:
            type: number
            format: double
          nullable: true
        result:
          type: string
          nullable: true
      additionalProperties: false
    WorklistData:
      type: object
      properties:
        headers:
          type: array
          items:
            type: string
          nullable: true
        rows:
          type: array
          items:
            type: array
            items:
              type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: Enter your JWT in the text input below.
      scheme: Bearer
      bearerFormat: JWT
security:
  - Bearer: []
