{
  "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": []
    }
  ]
}