{
  "swagger": "2.0",
  "info": {
    "description": "All Optilogic users can view the endpoint documentation below, <a href='https://optilogic.app/#/user-account?tab=pricing'>upgrade to a paid account</a> to gain access.<br /><br />Once you have api access, use the `refreshApiKey` endpoint with your account login information or use the `Quick Start` form below to get started.\n### Installing Additional Python Packages <a id=\"installing-additional-python-packages\"></a>\nWhen a job is run - such as when using the **Job POST** endpoint - the system will check the directoryPath specified in the POST call for a file named `requirements.txt`. If the file exists, then the system will attempt to install all packages specified by running `pip install -r requirements.txt` before running the file specified in the filePath parameter.\n### Accessing your Files <a id=\"accessing-your-files\"></a>\nYour files are stored in the */projects* directory of the workspace. Files saved in this directory are available to your *Atlas* workspace and to REST API endpoints.\nAll directory paths passed as a *directoryPath*, *sourceDirectoryPath*, or *targetDirectoryPath* parameter are relative to the */projects* directory.\nThis means you must **not** include */projects* as part of the path string.\n\nExample:\n  - directoryPath = \"pyomo-examples/models/diet-problem\"\n  - filePath = \"diet-problem.py\"\n\nExample:\n  - directoryPath = \".\"\n  - filePath = \"my-model.py\"\n\n<br>\n\n## Example Application <a id=\"example-app\"></a>\n\n<a target=\"_blank\" href=\"https://optilogic.github.io/optiapp-web-demo/\">OptiJS Demo</a>\n\nThis demo application uses the OptiJS client library to run and monitor jobs from Python modules on a users' account. Custom applications can be quickly created on top of the Optilogic API using the <a target=\"_blank\" href=\"https://cdn.optilogic.app/web/optijs/api.js\">OptiJS</a> and <a target=\"_blank\" href=\"https://pypi.org/project/optilogic\">OptiPy</a> client libraries.\n\n\n<br>\n",
    "version": "1.0.0",
    "title": "Optilogic REST API",
    "contact": {
      "name": "Optilogic Support",
      "email": "support@optilogic.com"
    }
  },
  "externalDocs": {
    "description": "Find out more about Optilogic",
    "url": "https://optilogic.com"
  },
  "host": "api.optilogic.app",
  "basePath": "/v0",
  "tags": [
    {
      "name": "authentication",
      "description": "Get authentication keys and client credentials"
    },
    {
      "name": "storage",
      "description": "Get storage information"
    },
    {
      "name": "storage : sharing",
      "description": "Share, send, and clone databases"
    },
    {
      "name": "storage : templates",
      "description": "Get database template information"
    },
    {
      "name": "storage : tags",
      "description": "Manage custom tags on a storage record"
    },
    {
      "name": "storage : labels",
      "description": "Manage custom key/value attributes on a storage record"
    },
    {
      "name": "storage : custom columns",
      "description": "Manage database custom columns"
    },
    {
      "name": "storage : custom tables",
      "description": "Manage database custom tables"
    },
    {
      "name": "utility",
      "description": "A library of tools that solve specific problems"
    },
    {
      "name": "workspace",
      "description": "Get information about a workspace, including job and file information"
    },
    {
      "name": "job",
      "description": "Get information about Andromeda jobs"
    }
  ],
  "schemes": [
    "https"
  ],
  "paths": {
    "/refreshApiKey": {
      "post": {
        "tags": [
          "authentication"
        ],
        "summary": "Create a new API key",
        "description": "Creates and returns a new API key. The users `username` and `password`, or a 'refresh key' must be passed in using headers. This api key will only be visible once at the time of creation.<br /><br />This API key will need to be refreshed at least every 1 hour to remain authenticated",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-USER-ID",
            "description": "User id",
            "required": false,
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-USER-PASSWORD",
            "description": "User password",
            "required": false,
            "type": "string",
            "format": "password"
          },
          {
            "in": "header",
            "name": "X-REFRESH-KEY",
            "description": "Refresh key previously obtained with this same endpoint",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/RefreshedApiKey"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/workspaces": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get a list of available workspaces in an account",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/WorkspaceList"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get information about a workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace name to get information",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Workspace"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobs": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "List the jobs for a specific workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace to list jobs from",
            "required": true,
            "type": "string"
          },
          {
            "name": "command",
            "in": "query",
            "description": "Filter by command property",
            "required": false,
            "type": "string"
          },
          {
            "name": "history",
            "in": "query",
            "description": "Filter by submitted property. Number of days or 'All'. Default is 7.",
            "required": false,
            "type": "string"
          },
          {
            "name": "runSecsMax",
            "in": "query",
            "description": "Filter by runTime property. Maximum seconds (list only where runTime is less than)",
            "required": false,
            "type": "integer"
          },
          {
            "name": "runSecsMin",
            "in": "query",
            "description": "Filter by runTime property. Minimum seconds (list only where runTime is greater than)",
            "required": false,
            "type": "integer"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by status property",
            "required": false,
            "type": "string",
            "enum": [
              "submitted",
              "starting",
              "started",
              "running",
              "canceling",
              "done",
              "stopping",
              "stopped",
              "cancelled",
              "error"
            ]
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Filter by tags property",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobList"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobs/stats": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get the stats only for jobs for a specific workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace to list jobs from",
            "required": true,
            "type": "string"
          },
          {
            "name": "command",
            "in": "query",
            "description": "Filter by command property",
            "required": false,
            "type": "string"
          },
          {
            "name": "history",
            "in": "query",
            "description": "Filter by submitted property. Number of days or 'All'. Default is 7.",
            "required": false,
            "type": "string"
          },
          {
            "name": "runSecsMax",
            "in": "query",
            "description": "Filter by runTime property. Maximum seconds (list only where runTime is less than)",
            "required": false,
            "type": "integer"
          },
          {
            "name": "runSecsMin",
            "in": "query",
            "description": "Filter by runTime property. Minimum seconds (list only where runTime is greater than)",
            "required": false,
            "type": "integer"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by status property",
            "required": false,
            "type": "enum",
            "enum": [
              "submitted\"",
              "starting",
              "started",
              "running",
              "canceling",
              "done",
              "stopping",
              "stopped",
              "cancelled",
              "error"
            ]
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Filter by tags property",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobListStats"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/job": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Queue a job",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace to run a job from",
            "required": true,
            "type": "string"
          },
          {
            "name": "directoryPath",
            "in": "query",
            "description": "Path to folder/directory (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "filename",
            "in": "query",
            "description": "Name of the file to run",
            "required": true,
            "type": "string"
          },
          {
            "name": "command",
            "in": "query",
            "description": "Modify job behavior to use one of Optilogic's Applied Research tools",
            "required": false,
            "type": "string",
            "enum": [
              "run",
              "presolve",
              "run_model"
            ],
            "default": "run"
          },
          {
            "name": "commandArgs",
            "in": "query",
            "description": "Additional arguments for the selected command\n\n*Note*: This string is included as provided. Directory and file paths (if any) are **not** inherently relative to */projects* as discussed in [Accessing your Files](#accessing-your-files)\n\n*Example*: \"/tmp/some_file.txt --verbose\"\n",
            "required": false,
            "type": "string"
          },
          {
            "name": "resourceConfig",
            "in": "query",
            "description": "Resource configuration (cpu and ram) used to run a job",
            "required": false,
            "type": "string",
            "enum": [
              "mini",
              "4XS",
              "3XS",
              "2XS",
              "XS",
              "S",
              "M",
              "L",
              "XL",
              "2XL",
              "3XL",
              "4XL"
            ],
            "default": "3XS"
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated list of tags for the job.",
            "required": false,
            "type": "string"
          },
          {
            "name": "timeout",
            "in": "query",
            "description": "Maximum job runtime in seconds. The job will be canceled if it runs past this value.",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobPost"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/job/{jobKey}": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get job information",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace where the job is running",
            "required": true,
            "type": "string"
          },
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          },
          {
            "name": "op",
            "in": "query",
            "description": "Operation - 'status' gets the job status, 'log' downloads a zip file with job info, results, and errors, 'result' downloads the job's result file, 'error' downloads the job's error file",
            "required": false,
            "type": "string",
            "enum": [
              "status",
              "log",
              "result",
              "error"
            ],
            "default": "status"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Job"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "workspace"
        ],
        "summary": "Stop a queued or running job",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace where the job is running",
            "required": true,
            "type": "string"
          },
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobDelete"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobBatch/jobify": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Queue a list of jobs",
        "description": "Allows you to queue jobs from a list of python modules.",
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace that contains your python modules.",
            "required": true,
            "type": "string"
          },
          {
            "name": "resourceConfig",
            "in": "query",
            "description": "Resource configuration (cpu and ram) used for any jobs that will be queued.",
            "required": false,
            "type": "string",
            "enum": [
              "mini",
              "4XS",
              "3XS",
              "2XS",
              "XS",
              "S",
              "M",
              "L",
              "XL",
              "2XL",
              "3XL",
              "4XL"
            ],
            "default": "3XS"
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated list of tags for the jobs that will queued.",
            "required": false,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Sequential list of python modules to be queued",
            "schema": {
              "type": "object",
              "properties": {
                "batchItems": {
                  "type": "array",
                  "example": [
                    {
                      "pyModulePath": "/projects/My Files/Advanced Model Template/Advanced Model Template_gurobi.py"
                    },
                    {
                      "pyModulePath": "/projects/Model Library/MIP Optimization/cutting_sheet_metal/cutting_sheet_metal.py",
                      "commandArgs": "arg1 arg2",
                      "timeout": 300
                    }
                  ],
                  "items": {
                    "type": "object",
                    "properties": {
                      "pyModulePath": {
                        "description": "The path to the python module that will be run.",
                        "type": "string",
                        "required": true
                      },
                      "commandArgs": {
                        "description": "Arguments to send to the python module.",
                        "type": "string",
                        "required": false
                      },
                      "timeout": {
                        "description": "Maximum job runtime in seconds. The job will be canceled if it runs past this value.",
                        "type": "integer",
                        "required": false
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobifyPost"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobBatch/jobify/searchNRun": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Queue a list of jobs from a list of search terms",
        "description": "Allows you to send a list of search terms and queue all matching python modules as jobs.",
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace that contains your python modules.",
            "required": true,
            "type": "string"
          },
          {
            "name": "resourceConfig",
            "in": "query",
            "description": "Resource configuration (cpu and ram) used for any jobs that will be queued.",
            "required": false,
            "type": "string",
            "enum": [
              "mini",
              "4XS",
              "3XS",
              "2XS",
              "XS",
              "S",
              "M",
              "L",
              "XL",
              "2XL",
              "3XL",
              "4XL"
            ],
            "default": "3XS"
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated list of tags for the jobs that will queued.",
            "required": false,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Sequential list of search items. Matches will be queued as new jobs.",
            "schema": {
              "type": "object",
              "properties": {
                "batchItems": {
                  "type": "array",
                  "example": [
                    {
                      "pySearchTerm": "Transportation",
                      "commandArgs": "-hours 48"
                    },
                    {
                      "pySearchTerm": "MIP Optimization/flow_shop_scheduling",
                      "timeout": 300
                    }
                  ],
                  "items": {
                    "type": "object",
                    "properties": {
                      "pySearchTerm": {
                        "description": "Search term that allows us to find the right python modules.",
                        "type": "string",
                        "required": true
                      },
                      "commandArgs": {
                        "description": "Arguments to send to the matching python modules.",
                        "type": "string",
                        "required": false
                      },
                      "timeout": {
                        "description": "Maximum job runtime in seconds. All matches will be canceled if they run past this value.",
                        "type": "integer",
                        "required": false
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobifyPost"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobBatch/backToBack": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Run a list of python modules",
        "description": "Run a list of python modules, as a single job, back to back, one after another.",
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace that contains your python modules.",
            "required": true,
            "type": "string"
          },
          {
            "name": "resourceConfig",
            "in": "query",
            "description": "Resource configuration (cpu and ram) used to run this job.",
            "required": false,
            "type": "string",
            "enum": [
              "mini",
              "4XS",
              "3XS",
              "2XS",
              "XS",
              "S",
              "M",
              "L",
              "XL",
              "2XL",
              "3XL",
              "4XL"
            ],
            "default": "3XS"
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated list of tags for this job.",
            "required": false,
            "type": "string"
          },
          {
            "name": "timeout",
            "in": "query",
            "description": "Maximum job runtime in seconds. The job will be canceled if it runs past this value.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "verboseOutput",
            "in": "query",
            "description": "When enabled, adds descriptive information to the output.",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "List of python modules. They will be run sequentially, in this order.",
            "schema": {
              "type": "object",
              "properties": {
                "batchItems": {
                  "type": "array",
                  "example": [
                    {
                      "pyModulePath": "/projects/My Files/Advanced Model Template/Advanced Model Template_gurobi.py"
                    },
                    {
                      "pyModulePath": "/projects/Model Library/MIP Optimization/cutting_sheet_metal/cutting_sheet_metal.py",
                      "commandArgs": "arg1 arg2",
                      "timeout": 300
                    }
                  ],
                  "items": {
                    "type": "object",
                    "properties": {
                      "pyModulePath": {
                        "description": "The python module to run. The full path is required.",
                        "type": "string",
                        "required": true
                      },
                      "commandArgs": {
                        "description": "Arguments to send to the python module.",
                        "type": "string",
                        "required": false
                      },
                      "timeout": {
                        "description": "Maximum job runtime in seconds for this python module.",
                        "type": "integer",
                        "required": false
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/BatchPost"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/jobBatch/backToBack/searchNRun": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Run a list of matching python modules.",
        "description": "Allows you to send a list, of search terms, and run all matching python modules, back to back in one job.",
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace that contains your python modules.",
            "required": true,
            "type": "string"
          },
          {
            "name": "resourceConfig",
            "in": "query",
            "description": "Resource configuration (cpu and ram) used for this job.",
            "required": false,
            "type": "string",
            "enum": [
              "mini",
              "4XS",
              "3XS",
              "2XS",
              "XS",
              "S",
              "M",
              "L",
              "XL",
              "2XL",
              "3XL",
              "4XL"
            ],
            "default": "3XS"
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated list of tags for this job.",
            "required": false,
            "type": "string"
          },
          {
            "name": "timeout",
            "in": "query",
            "description": "Maximum job runtime in seconds. The job will be canceled if it runs past this value.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "verboseOutput",
            "in": "query",
            "description": "When enabled, adds descriptive information to the output.",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Sequential list of search items. All matching python modules will be run before we look at the next search item.",
            "schema": {
              "type": "object",
              "properties": {
                "batchItems": {
                  "type": "array",
                  "example": [
                    {
                      "pySearchTerm": "Transportation",
                      "commandArgs": "-hours 48"
                    },
                    {
                      "pySearchTerm": "MIP Optimization/flow_shop_scheduling",
                      "timeout": 300
                    }
                  ],
                  "items": {
                    "type": "object",
                    "properties": {
                      "pySearchTerm": {
                        "description": "Search term that allows us to find the right python modules.",
                        "type": "string",
                        "required": true
                      },
                      "commandArgs": {
                        "description": "Arguments to send to the matching python modules.",
                        "type": "string",
                        "required": false
                      },
                      "timeout": {
                        "description": "Maximum runtime in seconds. A match will be canceled if it runs past this value.",
                        "type": "integer",
                        "required": false
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/BatchPost"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/files": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "List all user files in the workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace to list files from",
            "required": true,
            "type": "string"
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Search term to filter results",
            "required": false,
            "type": "string"
          },
          {
            "name": "maxDepth",
            "in": "query",
            "description": "Limit how many directories deep the search will iterate",
            "required": false,
            "type": "integer"
          },
          {
            "name": "baseDir",
            "in": "query",
            "description": "Optional starting directory to list files from",
            "required": false,
            "type": "string"
          },
          {
            "name": "includeDir",
            "in": "query",
            "description": "If true the response will include an array of all directory paths encountered",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/FileList"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/job/{jobKey}/ledger": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get records from the specified job's ledger",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace where the job was ran",
            "required": true,
            "type": "string"
          },
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          },
          {
            "name": "keys",
            "in": "query",
            "description": "Comma-separated string - Limits records to those whose key appears in the list. No value will return all records",
            "required": false,
            "type": "string",
            "default": ""
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit how many records will be returned",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobLedger"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/job/{jobKey}/metrics": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get metrics gathered while the job was running",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace where the job was ran",
            "required": true,
            "type": "string"
          },
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobMetrics"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/job/{jobKey}/metrics/stats": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get a roll-up of metric statistics gathered while the job was running",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Name of the workspace where the job was ran",
            "required": true,
            "type": "string"
          },
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/JobMetricsStats"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/file/copy": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Copy a file within a workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace in which the file will be copied",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceDirectoryPath",
            "in": "query",
            "description": "Path to the source file (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceFilename",
            "in": "query",
            "description": "Name of the source file in the workspace",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetDirectoryPath",
            "in": "query",
            "description": "Desired path of the new file in the workspace (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetFilename",
            "in": "query",
            "description": "Desired name of the new file in the workspace",
            "required": true,
            "type": "string"
          },
          {
            "name": "overwrite",
            "in": "query",
            "description": "Overwrite existing file if there is one",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "schema": {
              "$ref": "#/definitions/CopyFile"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorFileCopy"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorFileCopy"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorFileCopy"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "412": {
            "description": "File Already Exists",
            "schema": {
              "$ref": "#/definitions/ErrorFileCopy"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/file/share": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Share a file with other users",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace from which to share",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceDirectoryPath",
            "in": "query",
            "description": "Path to the source file (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceFilename",
            "in": "query",
            "description": "Name of the source file in the workspace",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUsers",
            "in": "query",
            "description": "Comma-delimited list of users to share to (usernames or emails)",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "schema": {
              "$ref": "#/definitions/FileShare"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorFileShare"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorFileShare"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorFileShare"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/file/{directoryPath}/{filename}": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Get a file from a specific workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace where the file exists",
            "required": true,
            "type": "string"
          },
          {
            "name": "directoryPath",
            "in": "path",
            "description": "Path to the file (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "filename",
            "in": "path",
            "description": "Name of the file",
            "required": true,
            "type": "string"
          },
          {
            "name": "op",
            "in": "query",
            "description": "Operation - 'download' downloads the file, 'status' gets the file info and status",
            "required": false,
            "type": "string",
            "enum": [
              "status",
              "download"
            ],
            "default": "status"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/File"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Upload a file to a workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "content-type",
            "in": "header",
            "description": "Only 'application/octet-stream' is supported",
            "required": true,
            "type": "string"
          },
          {
            "name": "content-length",
            "in": "header",
            "description": "Size of the file being uploaded",
            "required": true,
            "type": "string"
          },
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace where the file will be uploaded",
            "required": true,
            "type": "string"
          },
          {
            "name": "directoryPath",
            "in": "path",
            "description": "Path to the file destination (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "filename",
            "in": "path",
            "description": "Desired name of the file in the workspace",
            "required": true,
            "type": "string"
          },
          {
            "name": "overwrite",
            "in": "query",
            "description": "Overwrite existing file if there is one",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/UploadFile"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "412": {
            "description": "File already exists",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "workspace"
        ],
        "summary": "Delete a specific file from a workspace",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace where the file exists",
            "required": true,
            "type": "string"
          },
          {
            "name": "directoryPath",
            "in": "path",
            "description": "Path to the file (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "filename",
            "in": "path",
            "description": "Name of the file",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "schema": {
              "$ref": "#/definitions/FileDelete"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/folder/share": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Share a folder with other users",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "workspace",
            "in": "path",
            "description": "Workspace from which to share",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceDirectoryPath",
            "in": "query",
            "description": "Path to the source directory (see [Accessing your Files](#accessing-your-files))",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUsers",
            "in": "query",
            "description": "Comma-delimited list of users to share to (usernames or emails)",
            "required": true,
            "type": "string"
          },
          {
            "name": "includeHidden",
            "in": "query",
            "description": "Include hidden files contained in the folder",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "schema": {
              "$ref": "#/definitions/FolderShare"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorFolderShare"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorFolderShare"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorFolderShare"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/{workspace}/folder/{directoryPath}": null,
    "/job/db-data-export/list": {
      "get": {
        "tags": [
          "job"
        ],
        "summary": "List DB Data Export jobs",
        "description": "",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DbDataExportJobList"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/job/db-data-export/{jobKey}": {
      "get": {
        "tags": [
          "job"
        ],
        "summary": "Get job information for a DB Data Export job",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "jobKey",
            "in": "path",
            "description": "Key of target job",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DbDataExportJob"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storages/db-connection-strings": {
      "get": {
        "tags": [
          "storage"
        ],
        "summary": "Get the connection information for all SQL storage items",
        "description": "",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/StoragesDBConnectionStrings"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/connection-string": {
      "get": {
        "tags": [
          "storage"
        ],
        "summary": "Get the connection information for a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/StorageSqlConnection"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/db-objects": {
      "get": {
        "tags": [
          "storage"
        ],
        "summary": "Get database objects (stats, tables, and views) for a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of database object to return",
            "required": false,
            "type": "string",
            "enum": [
              "stats",
              "tables",
              "views"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetDbObjects"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/schema": {
      "get": {
        "tags": [
          "storage"
        ],
        "summary": "Get database schema (tables and views) for a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "schema",
            "in": "query",
            "description": "Name of the database schema. (Blank or missing for all schemas)",
            "required": false,
            "type": "string"
          },
          {
            "name": "table",
            "in": "query",
            "description": "Name of the database table. (Blank or missing for all tables)",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetSchema"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-tables": {
      "get": {
        "tags": [
          "storage : custom tables"
        ],
        "summary": "Get custom tables",
        "description": "Retrieve a list of all customtables in a database.",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetCustomTables"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-table": {
      "post": {
        "tags": [
          "storage : custom tables"
        ],
        "summary": "Create a custom table.",
        "description": "Creates a custom table with an id column as its primary key.  Table will be created with lowercased letters.",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the table to create",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CreateCustomTable"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "put": {
        "tags": [
          "storage : custom tables"
        ],
        "summary": "Rename a custom table.",
        "description": "Renames a custom table.  Table will be renamed with lowercased letters.",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the table to rename",
            "required": true,
            "type": "string"
          },
          {
            "name": "newTableName",
            "in": "query",
            "description": "New name of the table",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UpdateCustomTable"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "storage : custom tables"
        ],
        "summary": "Delete a custom table.",
        "description": "Deletes a custom table.",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the table to delete",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DeleteCustomTable"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/customizations": {
      "get": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Get database schema (tables and views) for a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "table",
            "in": "query",
            "description": "Name of the database table. (Blank or missing for all tables)",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetCustomizations"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storages/db-column-types": {
      "get": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Get supported column data types",
        "description": "Retrieve a list of all supported column data types for the database.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetColumnDataTypes"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-column": {
      "post": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Create a new custom column in a database table",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the database table",
            "required": true,
            "type": "string"
          },
          {
            "name": "columnName",
            "in": "query",
            "description": "Name of the column to be created",
            "required": true,
            "type": "string"
          },
          {
            "name": "dataType",
            "in": "query",
            "description": "Data type of the new column (numeric,integer,text,etc.)",
            "required": true,
            "type": "string"
          },
          {
            "name": "characterMaximumLength",
            "in": "query",
            "description": "Maximum length of characters for the new column. (Only required if actual data type is character based and not 'text')",
            "required": false,
            "type": "integer"
          },
          {
            "name": "isNullable",
            "in": "query",
            "description": "Whether the new column can be NULL",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultValue",
            "in": "query",
            "description": "Default value for the new column",
            "required": false,
            "type": "string"
          },
          {
            "name": "isTableKeyColumn",
            "in": "query",
            "description": "Whether the column is a key column for the table",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "trueDataType",
            "in": "query",
            "description": "The actual(physical) storage type of the table in postgres. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)",
            "required": false,
            "type": "string"
          },
          {
            "name": "isRequired",
            "in": "query",
            "description": "Whether the column is required",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CreateCustomColumn"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/CustomColumnsResponseError"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "get": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Get details of a single custom column in a database table",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the database table",
            "required": true,
            "type": "string"
          },
          {
            "name": "columnName",
            "in": "query",
            "description": "Name of the database column",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetCustomColumn"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/CustomColumnsResponseError"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "put": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Update a custom column",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the database table",
            "required": true,
            "type": "string"
          },
          {
            "name": "columnName",
            "in": "query",
            "description": "Name of the column to be updated",
            "required": true,
            "type": "string"
          },
          {
            "name": "newColumnName",
            "in": "query",
            "description": "New name for the column (if being renamed)",
            "required": false,
            "type": "string"
          },
          {
            "name": "dataType",
            "in": "query",
            "description": "Data type of the column. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)",
            "required": false,
            "type": "string"
          },
          {
            "name": "characterMaximumLength",
            "in": "query",
            "description": "Maximum length of characters for the column",
            "required": false,
            "type": "integer"
          },
          {
            "name": "isNullable",
            "in": "query",
            "description": "Whether the column can be NULL",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultValue",
            "in": "query",
            "description": "Default value for the column",
            "required": false,
            "type": "string"
          },
          {
            "name": "isTableKeyColumn",
            "in": "query",
            "description": "Whether the column is a key column for the table",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "trueDataType",
            "in": "query",
            "description": "The true data type of the column",
            "required": false,
            "type": "string"
          },
          {
            "name": "isRequired",
            "in": "query",
            "description": "Whether the column is required",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UpdateCustomColumn"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/CustomColumnsResponseError"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Delete a custom column",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the database table",
            "required": true,
            "type": "string"
          },
          {
            "name": "columnName",
            "in": "query",
            "description": "Name of the database column",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DeleteCustomColumn"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/CustomColumnsResponseError"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-columns": {
      "get": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Get all custom columns for a table",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "tableName",
            "in": "query",
            "description": "Name of the database table",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetAllCustomColumns"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/CustomColumnsResponseError"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-columns/validate": {
      "get": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Validate custom columns",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ValidateCustomColumns"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/custom-columns/repair": {
      "post": {
        "tags": [
          "storage : custom columns"
        ],
        "summary": "Repair custom columns",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/RepairCustomColumns"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/labels": {
      "delete": {
        "tags": [
          "storage : labels"
        ],
        "summary": "Remove custom key/value pars of labels. (Pass a list of string keys to remove. i.e.: ?labels=[\"key1\",\"key2\",\"key3\"])",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "labels",
            "in": "query",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "any",
                  "example": {
                    "key1": "test",
                    "key2": false,
                    "key3": 4
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "get": {
        "tags": [
          "storage : labels"
        ],
        "summary": "Get labels",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "any",
                  "example": {
                    "key1": "test",
                    "key2": false,
                    "key3": 4
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "post": {
        "tags": [
          "storage : labels"
        ],
        "summary": "Add labels",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "labels",
            "in": "query",
            "required": true,
            "type": "object"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "any",
                  "example": {
                    "key1": "test",
                    "key2": false,
                    "key3": 4
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "put": {
        "tags": [
          "storage : labels"
        ],
        "summary": "Replace labels",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "labels",
            "in": "query",
            "required": true,
            "type": "object"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "any",
                  "example": {
                    "key1": "test",
                    "key2": false,
                    "key3": 4
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/tags": {
      "delete": {
        "tags": [
          "storage : tags"
        ],
        "summary": "Remove tags",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tags",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "string",
                  "example": "tag1,tag2,tag3"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "get": {
        "tags": [
          "storage : tags"
        ],
        "summary": "Get tags",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Tags retrieved successfully",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "string",
                  "example": "tag1,tag2,tag3"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "post": {
        "tags": [
          "storage : tags"
        ],
        "summary": "Add tags",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tags",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "string",
                  "example": "tag1,tag2,tag3"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "put": {
        "tags": [
          "storage : tags"
        ],
        "summary": "Replace tags",
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tags",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "example": "success"
                },
                "tags": {
                  "type": "string",
                  "example": "tag1,tag2,tag3"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/tables": {
      "get": {
        "tags": [
          "storage"
        ],
        "summary": "Get tables information for a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "schema",
            "in": "query",
            "description": "Database schema to return tables from",
            "required": false,
            "type": "string",
            "default": ""
          },
          {
            "name": "rowCounts",
            "in": "query",
            "description": "Return row counts or not",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GetStorageTables"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/empty-tables": {
      "post": {
        "tags": [
          "storage"
        ],
        "summary": "Delete all data rows from specified tables in a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "dryRun",
            "in": "query",
            "description": "When true, do not empty the tables",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Array of tables to empty",
            "schema": {
              "type": "object",
              "properties": {
                "tables": {
                  "type": "array",
                  "example": [
                    "anura_2_5.customers",
                    "anura_2_5.optimizationcustomersummary"
                  ],
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/EmptyStorageTables"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/db-data-export": {
      "post": {
        "tags": [
          "storage"
        ],
        "summary": "Export all rows from selected tables/views, or the results of a query in a SQL storage item",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "sourceSchema",
            "in": "query",
            "description": "The schema to export tables/views from. e.g., 'anura_2_6'. Applies to sourceList and sourceGroup, but not sourceQuery.",
            "required": false,
            "type": "string",
            "example": "anura_2_5"
          },
          {
            "name": "sourceGroup",
            "in": "query",
            "description": "A group of tables/views to export.",
            "required": false,
            "enum": [
              "all",
              "tables",
              "views",
              "nonEmptyAll",
              "nonEmptyTables",
              "nonEmptyViews"
            ],
            "type": "string"
          },
          {
            "name": "format",
            "in": "query",
            "description": "Output format for the export. Default is 'csv' if not specified.",
            "required": false,
            "enum": [
              "csv",
              "xls",
              "table"
            ],
            "type": "string",
            "default": "csv"
          },
          {
            "name": "destinationSchema",
            "in": "query",
            "description": "The schema to export query results to when format=table. Default if not specified is 'query_results'.",
            "required": false,
            "type": "string",
            "example": "anura_2_8"
          },
          {
            "name": "destinationTable",
            "in": "query",
            "description": "The table name to export query results to when format=table. Default if not specified is 'results'.",
            "required": false,
            "type": "string",
            "example": "my_new_table"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "An array of tables/views (sourceList) or a SQL query (sourceQuery) to export.",
            "schema": {
              "type": "object",
              "properties": {
                "sourceList": {
                  "type": "array",
                  "example": [
                    "customers",
                    "facilities",
                    "products"
                  ],
                  "items": {
                    "type": "string"
                  }
                },
                "sourceQuery": {
                  "type": "string",
                  "example": "select * from anura_2_6.products where status='Include'",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DbDataExport"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/file/move": {
      "put": {
        "tags": [
          "storage"
        ],
        "summary": "Move a file within a storage device",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "source",
            "in": "query",
            "description": "Target path of the existing file",
            "required": true,
            "type": "string"
          },
          {
            "name": "dest",
            "in": "query",
            "description": "New path for the targeted file",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/StorageMoveFile"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/folder/move": {
      "put": {
        "tags": [
          "storage"
        ],
        "summary": "Move a folder within a storage device",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "source",
            "in": "query",
            "description": "Target directory to move",
            "required": true,
            "type": "string"
          },
          {
            "name": "dest",
            "in": "query",
            "description": "New location of the targeted directory",
            "required": true,
            "type": "string"
          },
          {
            "name": "mergeIfTargetExists",
            "in": "query",
            "description": "If true, merge the source directory into the target directory if it exists",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/StorageMoveDirectory"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/folder/copy": {
      "put": {
        "tags": [
          "storage"
        ],
        "summary": "Copy a folder within a storage device or from one storage device to another",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the target storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "source",
            "in": "query",
            "description": "Target directory to copy",
            "required": true,
            "type": "string"
          },
          {
            "name": "dest",
            "in": "query",
            "description": "Path of the new directory",
            "required": true,
            "type": "string"
          },
          {
            "name": "destStorageName",
            "in": "query",
            "description": "Name of the target storage device. Defaults to same storage device as storageName if not included",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/StorageCopyDirectory"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/reassign": {
      "post": {
        "tags": [
          "storage : sharing"
        ],
        "summary": "Reassigns storage ownership to a specified user",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the storage device to be reassigned",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUser",
            "in": "query",
            "description": "Username or email address of the user who will be assigned ownership of the storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/share": {
      "post": {
        "tags": [
          "storage : sharing"
        ],
        "summary": "Sends a copy to a specified user",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the storage device to be shared",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUser",
            "in": "query",
            "description": "Username or email address of the user who will be assigned ownership of the storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/clone": {
      "post": {
        "tags": [
          "storage : sharing"
        ],
        "summary": "Duplicates a storage",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the storage device to be duplicated",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storage/{storageName}/share/access": {
      "post": {
        "tags": [
          "storage : sharing"
        ],
        "summary": "Shares storage access to a specified user",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the storage device to be shared",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUser",
            "in": "query",
            "description": "Username or email address of the user who will be assigned ownership of the storage device",
            "required": true,
            "type": "string"
          },
          {
            "name": "access",
            "in": "query",
            "description": "To govern read only access. Only 'readonly' will define read only share, anything else will give trusted access, including omitting the parameter.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "storage : sharing"
        ],
        "summary": "Removed shared storage access from a specified user",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storageName",
            "in": "path",
            "description": "Name of the storage device to have access removed",
            "required": true,
            "type": "string"
          },
          {
            "name": "targetUser",
            "in": "query",
            "description": "Username or email address of the user who will be assigned ownership of the storage device",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "format": "string"
                },
                "error": {
                  "type": "string",
                  "format": "string"
                },
                "correlationId": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storages/db-templates": {
      "get": {
        "tags": [
          "storage : templates"
        ],
        "summary": "Get a list of database template versions used to create a new database.",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Id of the baselineTemplate or templateSet group to retrieve.",
            "required": false,
            "type": "string"
          },
          {
            "name": "schema",
            "in": "query",
            "description": "Database schema to return templates from.",
            "required": false,
            "type": "string",
            "enum": [
              "anura"
            ],
            "default": ""
          },
          {
            "name": "schemaType",
            "in": "query",
            "description": "'baselineTemplate' or 'templateSet'",
            "required": false,
            "type": "string",
            "enum": [
              "baselineTemplate",
              "templateSet"
            ]
          },
          {
            "name": "includeNonDefault",
            "in": "query",
            "description": "Include non-default templates.",
            "required": false,
            "type": "boolean",
            "enum": [
              false,
              true
            ],
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DBTemplates"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/storages/db-template-sets": {
      "get": {
        "tags": [
          "storage : templates"
        ],
        "summary": "Get a distinct list of database templates and release statuses associated with each one.",
        "description": "A template set is an Optilogic database categorization.  For example: Anura New Model, Global Supply Chain Strategy, Tactical Capacity Optimization, etc.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DBTemplateSets"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/secrets": {
      "get": {
        "tags": [
          "utility"
        ],
        "summary": "Get a list of stored secrets",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Only return secrets with the specified type",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/SecretsList"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/secret/{secretName}": {
      "get": {
        "tags": [
          "utility"
        ],
        "summary": "Get a stored secret by name",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "secretName",
            "in": "path",
            "description": "Name of the secret to get",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "post": {
        "tags": [
          "utility"
        ],
        "summary": "Add a new secret",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "secretName",
            "in": "path",
            "description": "Name of the new secret",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of secret (eg. `geocode`, `custom`, `ssh`). Default value is `custom`",
            "required": false,
            "type": "string",
            "default": "custom"
          },
          {
            "name": "value",
            "in": "query",
            "description": "Value of the secret - will be encrypted and not exposed when listing all secrets",
            "required": true,
            "type": "string"
          },
          {
            "name": "meta",
            "in": "query",
            "description": "Metadata and other custom data",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "description": "Description of the secret",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "put": {
        "tags": [
          "utility"
        ],
        "summary": "Change one or more fields on a stored secret",
        "description": "One of 'name', 'type', 'value', 'meta', or 'description' must be provided and only fields provided will be updated",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "secretName",
            "in": "path",
            "description": "Name of the secret to update",
            "required": true,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "description": "New name for this secret",
            "required": false,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": "New type of secret (eg. `geocode`, `custom`, `ssh`)",
            "required": false,
            "type": "string"
          },
          {
            "name": "value",
            "in": "query",
            "description": "New value of the secret - will be encrypted and not exposed when listing all secrets",
            "required": false,
            "type": "string"
          },
          {
            "name": "meta",
            "in": "query",
            "description": "new metadata and other custom data",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "description": "New description of the secret",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      },
      "delete": {
        "tags": [
          "utility"
        ],
        "summary": "Delete a secret",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "secretName",
            "in": "path",
            "description": "Name of the secret to delete",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "202": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/SecretDelete"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Forbidden"
            }
          },
          "404": {
            "description": "Resource Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    }
  },
  "securityDefinitions": {
    "APIKeyHeader": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-KEY"
    }
  },
  "definitions": {
    "GetColumnDataTypes": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "count": {
          "type": "integer",
          "example": 31
        },
        "dataTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": {
            "result": "success",
            "count": 33,
            "dataTypes": [
              {
                "name": "bit",
                "supportsMaxLength": true
              },
              {
                "name": "bool",
                "supportsMaxLength": false
              },
              {
                "name": "bytea",
                "supportsMaxLength": false
              },
              {
                "name": "character",
                "supportsMaxLength": true
              }
            ]
          }
        }
      }
    },
    "CreateCustomTable": {
      "type": "object",
      "properties": {
        "tableName": null,
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        }
      }
    },
    "GetCustomTables": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "customTables": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "UpdateCustomTable": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        }
      }
    },
    "DeleteCustomTable": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "CreateCustomColumn": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        }
      }
    },
    "GetCustomColumn": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "customColumn": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "example": 106
            },
            "tableName": {
              "type": "string",
              "example": "your_table"
            },
            "columnName": {
              "type": "string",
              "example": "your_column"
            },
            "dataType": {
              "type": "string",
              "example": "integer"
            },
            "characterMaximumLength": {
              "type": "integer",
              "example": 255
            },
            "isNullable": {
              "type": "boolean",
              "example": false
            },
            "defaultValue": {
              "type": "string",
              "example": null
            },
            "isTableKeyColumn": {
              "type": "boolean",
              "example": false
            },
            "trueDataType": {
              "type": "string",
              "example": "text"
            },
            "isRequired": {
              "type": "boolean",
              "example": true
            }
          }
        }
      }
    },
    "UpdateCustomColumn": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "id": {
          "type": "integer",
          "example": 106
        },
        "tableName": {
          "type": "string",
          "example": "your_table"
        },
        "columnName": {
          "type": "string",
          "example": "your_column"
        },
        "dataType": {
          "type": "string",
          "example": "integer"
        },
        "characterMaximumLength": {
          "type": "integer",
          "example": 255
        },
        "isNullable": {
          "type": "boolean",
          "example": false
        },
        "defaultValue": {
          "type": "string",
          "example": null
        },
        "isTableKeyColumn": {
          "type": "boolean",
          "example": false
        },
        "trueDataType": {
          "type": "string",
          "example": "text"
        },
        "isRequired": {
          "type": "boolean",
          "example": true
        },
        "message": {
          "type": "string"
        }
      }
    },
    "DeleteCustomColumn": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "CustomColumn": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "example": 106
        },
        "tableName": {
          "type": "string",
          "example": "your_table"
        },
        "columnName": {
          "type": "string",
          "example": "your_column"
        },
        "dataType": {
          "type": "string",
          "example": "integer"
        },
        "characterMaximumLength": {
          "type": "integer",
          "example": 255
        },
        "isNullable": {
          "type": "boolean",
          "example": false
        },
        "defaultValue": {
          "type": "string",
          "example": null
        },
        "isTableKeyColumn": {
          "type": "boolean",
          "example": false
        },
        "trueDataType": {
          "type": "string",
          "example": "text"
        },
        "isRequired": {
          "type": "boolean",
          "example": true
        }
      }
    },
    "GetAllCustomColumns": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "count": {
          "type": "integer",
          "example": 3
        },
        "customColumns": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomColumn"
          }
        }
      }
    },
    "CustomColumnIssue": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "example": "UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch",
          "enum": [
            "UnspecifiedError",
            "TableWithNoColumns",
            "MissingTable",
            "MissingColumn",
            "ExtraColumn",
            "TypeMismatch",
            "MissingMetadata",
            "MetadataDiscrepancy",
            "IsNullableMismatch",
            "UpdateTypedView",
            "MissingTypedView",
            "DefaultValueMismatch",
            "MaxLengthMismatch"
          ]
        },
        "tableName": {
          "type": "string"
        },
        "columnName": {
          "type": "string"
        },
        "expected": {
          "example": "types:string, number, bool, null etc.",
          "nullable": true
        },
        "actual": {
          "example": "types:string, number, bool, null etc.",
          "nullable": true
        },
        "description": {
          "type": "string"
        }
      }
    },
    "ValidateCustomColumns": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "count": {
          "type": "integer",
          "example": 4
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomColumnIssue"
          }
        }
      }
    },
    "RepairCustomColumns": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "repairedCount": {
          "type": "integer",
          "example": 3
        },
        "errorsCount": {
          "type": "integer",
          "example": 3
        },
        "repaired": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomColumnIssue"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomColumnIssue"
          }
        }
      }
    },
    "CustomColumnList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/CustomColumn"
      }
    },
    "Account": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "name": {
          "type": "string",
          "format": "string"
        },
        "username": {
          "type": "string",
          "format": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "workspaceCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "RefreshedApiKey": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string",
          "example": "success"
        },
        "apiKey": {
          "type": "string",
          "format": "string",
          "description": "The new api key for this user."
        },
        "refreshKey": {
          "type": "string",
          "format": "string",
          "description": "The refresh key for this api key."
        },
        "expirationTime": {
          "type": "integer",
          "format": "int64"
        },
        "expiresIn": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "FileList": {
      "type": "object",
      "required": [
        "result",
        "count",
        "files"
      ],
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileShortInfoPath"
          }
        },
        "directories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "UploadFile": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "fileInfo": {
          "$ref": "#/definitions/FileShortInfo"
        }
      }
    },
    "CopyFile": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "copyStatus": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "targetFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        }
      }
    },
    "FileDelete": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "fileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        }
      }
    },
    "File": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "workspace": {
          "type": "string",
          "format": "string"
        },
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filePath": {
          "type": "string",
          "format": "string"
        },
        "lastModified": {
          "type": "string",
          "format": "date-time"
        },
        "contentLength": {
          "type": "integer",
          "format": "int64"
        },
        "date": {
          "type": "string",
          "format": "date-time"
        },
        "fileCreatedOn": {
          "type": "string",
          "format": "date-time"
        },
        "fileLastWriteOn": {
          "type": "string",
          "format": "date-time"
        },
        "fileChangeOn": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "FileShare": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "targetUsers": {
          "type": "string",
          "format": "string"
        },
        "jobsCount": {
          "type": "integer",
          "format": "int64"
        },
        "jobs": {
          "type": "array",
          "items": {
            "properties": {
              "jobKey": {
                "type": "string",
                "format": "uuid"
              },
              "result": {
                "type": "string",
                "format": "string"
              }
            }
          }
        },
        "erroredCount": {
          "type": "integer",
          "format": "int64"
        },
        "errored": {
          "type": "array",
          "items": {
            "properties": {
              "jobKey": {
                "type": "string",
                "format": "uuid"
              },
              "result": {
                "type": "string",
                "format": "string"
              }
            }
          }
        }
      }
    },
    "FolderShare": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "type": "object",
          "properties": {
            "directoryPath": {
              "type": "string",
              "format": "string"
            }
          }
        },
        "targetUsers": {
          "type": "string",
          "format": "string"
        },
        "jobsCount": {
          "type": "integer",
          "format": "int64"
        },
        "jobs": {
          "type": "array",
          "items": {
            "properties": {
              "jobKey": {
                "type": "string",
                "format": "uuid"
              },
              "result": {
                "type": "string",
                "format": "string"
              }
            }
          }
        },
        "erroredCount": {
          "type": "integer",
          "format": "int64"
        },
        "errored": {
          "type": "array",
          "items": {
            "properties": {
              "jobKey": {
                "type": "string",
                "format": "uuid"
              },
              "result": {
                "type": "string",
                "format": "string"
              }
            }
          }
        }
      }
    },
    "FolderDelete": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "StorageList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "storages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StorageInfo"
          }
        }
      }
    },
    "WorkspaceList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "workspaces": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkspaceInfo"
          }
        }
      }
    },
    "Workspace": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "status": {
          "type": "string",
          "format": "string",
          "description": "workspace state"
        },
        "name": {
          "type": "string",
          "format": "string"
        },
        "key": {
          "type": "string",
          "format": "string"
        },
        "stack": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "JobList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "statusCounts": {
          "$ref": "#/definitions/JobStatusCounts"
        },
        "tagCounts": {
          "$ref": "#/definitions/JobTagCounts"
        },
        "filters": {
          "$ref": "#/definitions/JobListFilters"
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JobInfo"
          }
        }
      }
    },
    "JobListStats": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "statusCounts": {
          "$ref": "#/definitions/JobStatusCounts"
        },
        "tagCounts": {
          "$ref": "#/definitions/JobTagCounts"
        },
        "filters": {
          "$ref": "#/definitions/JobListFilters"
        }
      }
    },
    "JobTagCounts": {
      "type": "object",
      "properties": {
        "tag": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "JobStatusCounts": {
      "type": "object",
      "properties": {
        "submitted": {
          "type": "integer",
          "format": "int64"
        },
        "starting": {
          "type": "integer",
          "format": "int64"
        },
        "started": {
          "type": "integer",
          "format": "int64"
        },
        "running": {
          "type": "integer",
          "format": "int64"
        },
        "done": {
          "type": "integer",
          "format": "int64"
        },
        "stopping": {
          "type": "integer",
          "format": "int64"
        },
        "stopped": {
          "type": "integer",
          "format": "int64"
        },
        "canceling": {
          "type": "integer",
          "format": "int64"
        },
        "cancelled": {
          "type": "integer",
          "format": "int64"
        },
        "error": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "JobListFilters": {
      "type": "object",
      "properties": {
        "command": {
          "type": "string",
          "format": "string"
        },
        "history": {
          "type": "string",
          "format": "string"
        },
        "runSecsMax": {
          "type": "string",
          "format": "string"
        },
        "runSecsMin": {
          "type": "string",
          "format": "string"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "tags": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "Job": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "submittedDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "startDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "endDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "runTime": {
          "type": "string",
          "format": "timespan"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "phase": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobDetailsInfo"
        }
      }
    },
    "JobPost": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobDetailsInfo"
        }
      }
    },
    "BatchPost": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "batch": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobDetailsInfo"
        }
      }
    },
    "JobifyPost": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "jobKeys": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "JobDelete": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobDetailsInfo"
        }
      }
    },
    "JobLedger": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int64"
              },
              "datetime": {
                "type": "string",
                "format": "date-time"
              },
              "key": {
                "type": "string",
                "format": "string"
              },
              "message": {
                "type": "string",
                "format": "string"
              }
            }
          }
        }
      }
    },
    "JobMetrics": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "max": {
          "type": "object",
          "properties": {
            "memoryPercent": {
              "type": "number",
              "format": "double"
            },
            "memoryResident": {
              "type": "number",
              "format": "double"
            },
            "memoryAvaliable": {
              "type": "number",
              "format": "double"
            },
            "cpuPercent": {
              "type": "number",
              "format": "double"
            },
            "cpuUsed": {
              "type": "number",
              "format": "double"
            },
            "cpuAvaliable": {
              "type": "number",
              "format": "double"
            },
            "processCount": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int64"
              },
              "datetime": {
                "type": "string",
                "format": "date-time"
              },
              "memoryPercent": {
                "type": "number",
                "format": "double"
              },
              "memoryResident": {
                "type": "number",
                "format": "double"
              },
              "memoryAvaliable": {
                "type": "number",
                "format": "double"
              },
              "cpuPercent": {
                "type": "number",
                "format": "double"
              },
              "cpuUsed": {
                "type": "number",
                "format": "double"
              },
              "cpuAvaliable": {
                "type": "number",
                "format": "double"
              },
              "processCount": {
                "type": "integer",
                "format": "int64"
              }
            }
          }
        }
      }
    },
    "JobMetricsStats": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "max": {
          "type": "object",
          "properties": {
            "memoryPercent": {
              "type": "number",
              "format": "double"
            },
            "memoryResident": {
              "type": "number",
              "format": "double"
            },
            "memoryAvaliable": {
              "type": "number",
              "format": "double"
            },
            "cpuPercent": {
              "type": "number",
              "format": "double"
            },
            "cpuUsed": {
              "type": "number",
              "format": "double"
            },
            "cpuAvaliable": {
              "type": "number",
              "format": "double"
            },
            "processCount": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "count": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "CustomColumnsResponseError": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "errorDetails": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "example": "UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch",
                "type": "string"
              },
              "tableName": {
                "type": "string"
              },
              "columnName": {
                "type": "string"
              },
              "expected": {
                "example": "types:string, number, bool, null etc.",
                "nullable": true
              },
              "actual": {
                "example": "types:string, number, bool, null etc.",
                "nullable": true
              },
              "description": {
                "type": "expected value"
              }
            }
          }
        }
      },
      "required": [
        "result",
        "message",
        "errorDetails"
      ]
    },
    "Error": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "Forbidden": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorFileCopy": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "copyStatus": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "targetFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorFileShare": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "targetUsers": {
          "type": "string",
          "format": "string"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorFolderShare": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "sourceDirectoryPath": {
          "type": "string",
          "format": "string"
        },
        "targetUsers": {
          "type": "string",
          "format": "string"
        },
        "includeHidden": {
          "type": "boolean",
          "format": "boolean"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorFolderDelete": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "recursive": {
          "type": "boolean",
          "format": "boolean"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorStorage": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ErrorStorageFile": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "error": {
          "type": "string",
          "format": "string"
        },
        "correlationId": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "FileMicroInfo": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "FileShortInfo": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "contentLength": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "FileShortInfoPath": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filePath": {
          "type": "string",
          "format": "string"
        },
        "contentLength": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "StorageInfo": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "format": "string"
        },
        "key": {
          "type": "string",
          "format": "string"
        },
        "type": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "WorkspaceInfo": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "format": "string",
          "description": "workspace state"
        },
        "name": {
          "type": "string",
          "format": "string"
        },
        "key": {
          "type": "string",
          "format": "string"
        },
        "stack": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "WorkspacePost": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "name": {
          "type": "string",
          "format": "string"
        },
        "stack": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "JobInfo": {
      "type": "object",
      "properties": {
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "submittedDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "startDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "endDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "runTime": {
          "type": "string",
          "format": "timespan"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "phase": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobDetailsInfo"
        }
      }
    },
    "JobDetailsInfo": {
      "type": "object",
      "properties": {
        "workspace": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filename": {
          "type": "string",
          "format": "string"
        },
        "resourceConfig": {
          "$ref": "#/definitions/JobDetailsResourceConfig"
        },
        "tags": {
          "type": "string",
          "format": "string"
        },
        "timeout": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "JobDetailsResourceConfig": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "format": "string"
        },
        "cpu": {
          "type": "string",
          "format": "string"
        },
        "ram": {
          "type": "string",
          "format": "string"
        },
        "run_rate": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetJob": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "submittedDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "startDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "endDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "runTime": {
          "type": "string",
          "format": "timespan"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "phase": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobsDetailsInfo"
        }
      }
    },
    "JobsList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "statusCounts": {
          "$ref": "#/definitions/JobStatusCounts"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "filters": {
          "$ref": "#/definitions/JobListFilters"
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JobsInfo"
          }
        }
      }
    },
    "JobsInfo": {
      "type": "object",
      "properties": {
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "submittedDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "startDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "endDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "runTime": {
          "type": "string",
          "format": "timespan"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "phase": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/JobsDetailsInfo"
        }
      }
    },
    "JobsDetailsInfo": {
      "type": "object",
      "properties": {
        "storages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "Studio",
            "Account"
          ]
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filename": {
          "type": "string",
          "format": "string"
        },
        "resourceConfig": {
          "$ref": "#/definitions/JobsDetailsResourceConfig"
        },
        "tags": {
          "type": "string",
          "format": "string"
        },
        "timeout": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "JobsDetailsResourceConfig": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "format": "string"
        },
        "cpu": {
          "type": "string",
          "format": "string"
        },
        "ram": {
          "type": "string",
          "format": "string"
        },
        "run_rate": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetStorage": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "format": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "transaction-optimized",
            "premium"
          ]
        },
        "size": {
          "type": "integer"
        },
        "used": {
          "type": "integer"
        }
      }
    },
    "StorageFiles": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "storageName": {
          "type": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StorageFile"
          }
        }
      }
    },
    "StorageFile": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filePath": {
          "type": "string",
          "format": "string"
        },
        "contentLength": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetStorageFile": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string"
        },
        "filename": {
          "type": "string",
          "format": "string"
        },
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "filePath": {
          "type": "string",
          "format": "string"
        },
        "contentLength": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "StorageDirectories": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "storageName": {
          "type": "string"
        },
        "directories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StorageDirectory"
          }
        }
      }
    },
    "StorageDirectory": {
      "type": "object",
      "properties": {
        "directoryPath": {
          "type": "string",
          "format": "string"
        },
        "children": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetExternalStorage": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "serviceType": {
          "type": "string",
          "enum": [
            "afs",
            "s3",
            "blob"
          ]
        }
      }
    },
    "StorageFileCopy": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "copyStatus": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "sourceFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        },
        "targetFileInfo": {
          "$ref": "#/definitions/FileMicroInfo"
        }
      }
    },
    "StorageUtilsZip": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "StoragesDBConnectionStrings": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "example": 1
        },
        "storages": {
          "type": "array",
          "items": {
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string",
                "format": "string"
              },
              "connectionInfo": {
                "type": "object",
                "properties": {
                  "raw": {
                    "type": "object",
                    "properties": {
                      "host": {
                        "type": "string",
                        "format": "string"
                      },
                      "port": {
                        "type": "integer",
                        "format": "int64",
                        "example": 6432
                      },
                      "dbname": {
                        "type": "string",
                        "format": "string"
                      },
                      "user": {
                        "type": "string",
                        "format": "string"
                      },
                      "password": {
                        "type": "string",
                        "format": "string"
                      },
                      "sslmode": {
                        "type": "string",
                        "format": "string"
                      }
                    }
                  },
                  "connectionStrings": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "format": "string",
                        "example": "postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DB_NAME}?sslmode=require"
                      },
                      "psql": {
                        "type": "string",
                        "format": "string",
                        "example": "psql \"host={HOST} port={PORT} dbname={DB_NAME} user={USER} password={PASSWORD} sslmode=require\""
                      },
                      "jdbc": {
                        "type": "string",
                        "format": "string",
                        "example": "jdbc:postgresql://{HOST}:{PORT}/{DB_NAME}?user={USER}&password={PASSWORD}&sslmode=require"
                      },
                      "libpq": {
                        "type": "string",
                        "format": "string",
                        "example": "host={HOST} port={PORT} dbname={DB_NAME} user={USER} password={PASSWORD} sslmode=require"
                      },
                      "net": {
                        "type": "string",
                        "format": "string",
                        "example": "Server={HOST};Database={DB_NAME};Port={PORT};User Id={USER};Password={PASSWORD};Ssl Mode=Require;"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "StorageSqlConnection": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "raw": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string",
              "format": "string"
            },
            "port": {
              "type": "integer",
              "format": "int64",
              "example": 6432
            },
            "dbname": {
              "type": "string",
              "format": "string"
            },
            "user": {
              "type": "string",
              "format": "string"
            },
            "password": {
              "type": "string",
              "format": "string"
            }
          }
        },
        "connectionStrings": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "format": "string",
              "example": "postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DB_NAME}?sslmode=require"
            },
            "psql": {
              "type": "string",
              "format": "string",
              "example": "psql \"host={HOST} port={PORT} dbname={DB_NAME} user={USER} password={PASSWORD} sslmode=require\""
            },
            "jdbc": {
              "type": "string",
              "format": "string",
              "example": "jdbc:postgresql://{HOST}:{PORT}/{DB_NAME}?user={USER}&password={PASSWORD}&sslmode=require"
            },
            "libpq": {
              "type": "string",
              "format": "string",
              "example": "host={HOST} port={PORT} dbname={DB_NAME} user={USER} password={PASSWORD} sslmode=require"
            },
            "net": {
              "type": "string",
              "format": "string",
              "example": "Server={HOST};Database={DB_NAME};Port={PORT};User Id={USER};Password={PASSWORD};Ssl Mode=Require;"
            }
          }
        }
      }
    },
    "GetSchema": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "properties": {
              "name": {
                "description": "the name of the schema",
                "type": "string"
              },
              "tables": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "columns": {
                      "type": "array",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "the name of the column",
                            "type": "string"
                          },
                          "dataType": {
                            "description": "the sql data type of the column",
                            "type": "string"
                          },
                          "isCustom": {
                            "description": "whether the column is custom or not",
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    }
                  }
                }
              },
              "views": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "columns": {
                      "type": "array",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "the name of the column",
                            "type": "string"
                          },
                          "dataType": {
                            "description": "the sql data type of the column",
                            "type": "string"
                          },
                          "isCustom": {
                            "description": "whether the column is custom or not",
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetDbObjects": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "properties": {
              "name": {
                "description": "the name of the schema",
                "type": "string"
              },
              "tableCount": {
                "type": "number"
              },
              "viewCount": {
                "type": "number"
              },
              "isDefault": {
                "type": "boolean"
              },
              "tables": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "rows": {
                      "type": "number"
                    },
                    "type": {
                      "type": "string"
                    },
                    "category": {
                      "type": "string"
                    },
                    "categoryOrder": {
                      "type": "string"
                    },
                    "technology": {
                      "type": "string"
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    },
                    "abbreviatedName": {
                      "type": "string"
                    }
                  }
                }
              },
              "views": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "rows": {
                      "type": "number"
                    },
                    "type": {
                      "type": "string"
                    },
                    "category": {
                      "type": "string"
                    },
                    "categoryOrder": {
                      "type": "string"
                    },
                    "technology": {
                      "type": "string"
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetCustomizations": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "properties": {
              "tables": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "columns": {
                      "type": "array",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "the name of the column",
                            "type": "string"
                          },
                          "dataType": {
                            "description": "the sql data type of the column",
                            "type": "string"
                          }
                        }
                      }
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    }
                  }
                }
              },
              "views": {
                "type": "array",
                "items": {
                  "properties": {
                    "name": {
                      "description": "the name of the table",
                      "type": "string"
                    },
                    "columns": {
                      "type": "array",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "the name of the column",
                            "type": "string"
                          },
                          "dataType": {
                            "description": "the sql data type of the column",
                            "type": "string"
                          }
                        }
                      }
                    },
                    "isCustom": {
                      "description": "whether the table is custom or not",
                      "type": "boolean",
                      "default": false
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetStorageTables": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "properties": {
              "name": {
                "description": "the name of the schema",
                "type": "string"
              },
              "tables": {
                "description": "the number of tables in the schema",
                "type": "integer"
              },
              "is_default_schema": {
                "description": "whether the schema is the default schema",
                "type": "boolean",
                "default": false
              }
            }
          }
        },
        "tables": {
          "type": "array",
          "items": {
            "properties": {
              "name": {
                "description": "the name of the table",
                "type": "string"
              },
              "schema": {
                "description": "the schema of the table",
                "type": "string"
              },
              "rows": {
                "description": "number of rows in the table",
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "EmptyStorageTables": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "dryRun": {
          "type": "boolean"
        },
        "emptied": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "tables which were emptied"
          }
        },
        "failed": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "tables which failed to be emptied"
          }
        }
      }
    },
    "DbDataExport": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "storageId": {
          "type": "string",
          "format": "uuid"
        },
        "storageName": {
          "type": "string",
          "format": "string"
        },
        "sourceSchema": {
          "type": "string",
          "format": "string"
        },
        "sourceGroup": {
          "type": "string",
          "format": "string"
        },
        "sourceList": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "tables/views which were specified to export"
          }
        },
        "sourceQuery": {
          "type": "string",
          "format": "string"
        },
        "format": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "StorageMoveFile": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "fileInfo": {
          "type": "object",
          "properties": {
            "storageName": {
              "type": "string",
              "format": "string"
            },
            "directoryPath": {
              "type": "string",
              "format": "string"
            },
            "filename": {
              "type": "string",
              "format": "string"
            }
          }
        }
      }
    },
    "StorageMoveDirectory": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "message": {
          "type": "string",
          "format": "string"
        },
        "storageName": {
          "type": "string",
          "format": "string"
        },
        "dest": {
          "type": "string",
          "format": "string"
        }
      }
    },
    "StorageCopyDirectory": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "ListJobStatistics": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/JobStatistics"
      }
    },
    "GetJobStatistics": {
      "properties": {
        "result": {
          "type": "string"
        },
        "stats": {
          "$ref": "#/definitions/JobStatistics"
        }
      }
    },
    "JobStatistics": {
      "type": "object",
      "properties": {
        "ram": {
          "type": "integer"
        },
        "maxRam": {
          "type": "integer"
        },
        "cpu": {
          "type": "integer"
        },
        "maxCpu": {
          "type": "integer"
        },
        "runtime": {
          "type": "integer"
        }
      }
    },
    "JobTagsSet": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        }
      }
    },
    "JobKey": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "SecretsList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "count": {
          "type": "integer"
        },
        "secrets": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "meta": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "created": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "Secret": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "meta": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "created": {
          "type": "string"
        }
      }
    },
    "SecretDuplicate": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "SecretDelete": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "DBTemplateSets": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer"
        },
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "templateSets": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "name": {
                      "type": "string"
                    },
                    "shortDescription": {
                      "type": "string"
                    },
                    "longDescription": {
                      "type": "string"
                    },
                    "availableReleaseStatuses": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DBTemplates": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer"
        },
        "templates": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "number"
              },
              "name": {
                "type": "string"
              },
              "templateType": {
                "type": "string",
                "enum": [
                  "baseline",
                  "templateSet"
                ]
              },
              "pgTemplateName": {
                "type": "string"
              },
              "schema": {
                "type": "string",
                "enum": [
                  "anura"
                ]
              },
              "baselineSchemaVersion": {
                "type": "string",
                "enum": [
                  "1.0"
                ]
              },
              "templateSetId": {
                "type": "number"
              },
              "templateVersion": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "isDefault": {
                "type": "boolean",
                "enum": [
                  true,
                  false
                ]
              }
            }
          }
        }
      }
    },
    "DBBaselineTemplatesAndTemplateSets": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer"
        },
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "baseTemplates": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "isDefault": {
                        "type": "boolean",
                        "enum": [
                          true,
                          false
                        ]
                      }
                    }
                  }
                }
              },
              "templateSets": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DbDataExportJobList": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "statusCounts": {
          "$ref": "#/definitions/JobStatusCounts"
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DbDataExportJob"
          }
        }
      }
    },
    "DbDataExportJob": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "format": "string"
        },
        "jobKey": {
          "type": "string",
          "format": "uuid"
        },
        "submittedDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "startDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "endDatetime": {
          "type": "string",
          "format": "date-time"
        },
        "runTime": {
          "type": "string",
          "format": "timespan"
        },
        "status": {
          "type": "string",
          "format": "string"
        },
        "phase": {
          "type": "string",
          "format": "string"
        },
        "jobInfo": {
          "$ref": "#/definitions/DbDataExportJobDetailsInfo"
        }
      }
    },
    "DbDataExportJobDetailsInfo": {
      "type": "object",
      "properties": {
        "storageId": {
          "type": "string",
          "format": "string"
        },
        "storageRequest": {
          "type": "string",
          "format": "string"
        },
        "sourceSchema": {
          "type": "string",
          "format": "string"
        },
        "sourceGroup": {
          "type": "string",
          "format": "string"
        },
        "sourceQuery": {
          "type": "string",
          "format": "string"
        },
        "format": {
          "type": "string",
          "format": "string"
        },
        "fileIDs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "downloadURLs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resourceConfig": {
          "$ref": "#/definitions/JobDetailsResourceConfig"
        }
      }
    }
  }
}