{
  "openapi": "3.0.1",
  "info": {
    "title": "Catalytic SDK API",
    "description": "\n## API for the Catalytic SDK\n",
    "contact": {
      "name": "Catalytic for Developers",
      "url": "https://catalytic-developer.readme.io/reference/catalytic-net-sdk",
      "email": "developers@catalytic.com"
    },
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://catalyticsdkapi.azurewebsites.net",
      "description": "Catalytic SDK API"
    }
  ],
  "paths": {
    "/api/auth": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Create new Credentials in the provided Catalytic team domain.\r\nCredentials must be approved prior to use.",
        "operationId": "CreateCredentials",
        "requestBody": {
          "description": "Params required to create new Credentials",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credentials"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/create-and-approve": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Create new Credentials using provided Catalytic team domain and Approve using provided email and password.",
        "operationId": "CreateAndApproveCredentials",
        "requestBody": {
          "description": "Params required to create and approve new Credentials",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationWithEmailAndPasswordRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationWithEmailAndPasswordRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationWithEmailAndPasswordRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsCreationWithEmailAndPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credentials"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/wait-for-approval": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Wait until Credentials are approved",
        "operationId": "WaitForCredentialsApproval",
        "requestBody": {
          "description": "Params required to poll approved Credentials",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WaitForCredentialsApprovalRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaitForCredentialsApprovalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WaitForCredentialsApprovalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WaitForCredentialsApprovalRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/tables/{id}": {
      "get": {
        "tags": [
          "Data Tables"
        ],
        "summary": "Get metadata for a Data Table by ID",
        "operationId": "GetDataTable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Data Table to get metadata for",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataTable"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/tables/{id}/download": {
      "get": {
        "tags": [
          "Data Tables"
        ],
        "summary": "Download a Data Table as a CSV or Excel file",
        "operationId": "DownloadDataTable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Data Table to download",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format to export the data table in. csv (default) or excel",
            "schema": {
              "$ref": "#/components/schemas/DataTableExportFormat"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/tables/{id}:replace": {
      "post": {
        "tags": [
          "Data Tables"
        ],
        "summary": "Replace a Data Table with contents from a CSV or Excel file",
        "operationId": "ReplaceDataTable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Data Table to download",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "headerRow",
            "in": "query",
            "description": "The row number that contains the column headers. Defaults to 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "sheetNumber",
            "in": "query",
            "description": "The number of the sheet to import. Only applies to Excel files. The first sheet is imported by default.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              },
              "encoding": {
                "files": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataTable"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/tables:upload": {
      "post": {
        "tags": [
          "Data Tables"
        ],
        "summary": "Upload a csv or excel file to create a data table",
        "operationId": "UploadDataTable",
        "parameters": [
          {
            "name": "tableName",
            "in": "query",
            "description": "The name of the table to create. Defaults to the file name without the extension",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "headerRow",
            "in": "query",
            "description": "The row number that contains the column headers. Defaults to 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "sheetNumber",
            "in": "query",
            "description": "The number of the sheet to import. Only applies to Excel files. The first sheet is imported by default.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              },
              "encoding": {
                "files": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataTable"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/tables": {
      "get": {
        "tags": [
          "Data Tables"
        ],
        "summary": "Find Data Tables",
        "operationId": "FindDataTables",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataTablesPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/files/{id}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get metadata of a file",
        "operationId": "GetFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the File to get metadata for",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/files/{id}/download": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Download a file",
        "operationId": "DownloadFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the file to download",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/files:upload": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Upload a file",
        "operationId": "UploadFiles",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              },
              "encoding": {
                "files": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilesPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/files": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Find Files",
        "operationId": "FindFiles",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilesPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances": {
      "get": {
        "tags": [
          "Instances"
        ],
        "summary": "Find Instances",
        "operationId": "FindInstances",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstancesPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Instances"
        ],
        "summary": "Starts a new Instance",
        "operationId": "StartInstance",
        "requestBody": {
          "description": "The details of the Instance to start",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/StartInstanceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartInstanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StartInstanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StartInstanceRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Instance"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{id}": {
      "get": {
        "tags": [
          "Instances"
        ],
        "summary": "Gets details of a specific Instance",
        "operationId": "GetInstance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance to get",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Instance"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{id}:stop": {
      "post": {
        "tags": [
          "Instances"
        ],
        "summary": "Stops a specific Instance",
        "operationId": "StopInstance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance to stop",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Instance"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps": {
      "get": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Find Instance Steps",
        "operationId": "FindInstanceSteps",
        "parameters": [
          {
            "name": "instanceId",
            "in": "path",
            "description": "The ID of the Instance",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStepsPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps/{id}": {
      "get": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Gets details of a specific Instance Step",
        "operationId": "GetInstanceStep",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance Steps to get",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStep"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps/{id}:complete": {
      "post": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Completes an Instance Step",
        "operationId": "CompleteStep",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance Step to complete",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The values of the fields to complete the task with",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteStepRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteStepRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteStepRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteStepRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStep"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps/{id}:start": {
      "post": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Starts a pending Instance Step",
        "operationId": "StartStep",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance Step to start",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStep"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps/{id}:snooze": {
      "post": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Snooze a pending Instance Step",
        "operationId": "SnoozeStep",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance Step to snooze",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStep"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/instances/{instanceId}/steps/{id}:reassign": {
      "post": {
        "tags": [
          "Instance Steps"
        ],
        "summary": "Reassigns a Instance Step",
        "operationId": "ReassignStep",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Instance Step to reassign",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the email address of the user to reassign the Instance Step to",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignStepRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignStepRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignStepRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignStepRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceStep"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots": {
      "get": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Find Pushbots",
        "operationId": "FindPushbots",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushbotsPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots/{id}": {
      "get": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Gets details of a specific Pushbot process template",
        "operationId": "GetPushbot",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Pushbot to get",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pushbot"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots:import": {
      "post": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Imports a new Pushbot",
        "operationId": "ImportPushbot",
        "requestBody": {
          "description": "The Pushbot Import request",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotImportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotImportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotImportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotImportRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushbotImport"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots/imports/{id}": {
      "get": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Fetch an existing PushbotImport request",
        "operationId": "GetPushbotImport",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Pushbot Import Id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushbotImport"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots/{id}:export": {
      "post": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Exports an existing Pushbot",
        "operationId": "ExportPushbot",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Pushbot to export",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The Pushbot Export request",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotExportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotExportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotExportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PushbotExportRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushbotExport"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/pushbots/exports/{id}": {
      "get": {
        "tags": [
          "Pushbots"
        ],
        "summary": "Fetch an existing PushbotExport request",
        "operationId": "GetPushbotExport",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Pushbot Export Id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushbotExport"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/credentials": {
      "get": {
        "tags": [
          "User Credentials"
        ],
        "summary": "Find User Tokens",
        "operationId": "FindCredentials",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialsPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/credentials/{id}": {
      "get": {
        "tags": [
          "User Credentials"
        ],
        "operationId": "GetCredentials",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credentials"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/credentials/{id}:revoke": {
      "post": {
        "tags": [
          "User Credentials"
        ],
        "summary": "Revoke User Token",
        "operationId": "RevokeCredentials",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The public Access Identifier of the Credentials",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credentials"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets details of a specific User",
        "operationId": "GetUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID or username of the User to get",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List all users on team",
        "operationId": "FindUsers",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text query terms to search all attributes for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Run or task status to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "process_id",
            "in": "query",
            "description": "Process ID (aka Pushbot ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "description": "RunID (aka Instance ID) to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "Run or task owner to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Category of process or run to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participating_users",
            "in": "query",
            "description": "Task assignee to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "The token representing the result page to get",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The page size requested",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsersPage"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "CredentialsCreationRequest": {
        "required": [
          "domain"
        ],
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": false
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CredentialType": {
        "enum": [
          "user",
          "actionWorker"
        ],
        "type": "string"
      },
      "Credentials": {
        "required": [
          "domain",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/CredentialType"
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "secret": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CredentialsCreationWithEmailAndPasswordRequest": {
        "required": [
          "domain",
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WaitForCredentialsApprovalRequest": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "waitTimeMillis": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmptyResult": {
        "type": "object",
        "additionalProperties": false
      },
      "FieldType": {
        "enum": [
          "undefined",
          "text",
          "integer",
          "decimal",
          "date",
          "dateTime",
          "json",
          "bool",
          "singleChoice",
          "multipleChoice",
          "instructions",
          "file",
          "table",
          "pushbot",
          "instance",
          "user"
        ],
        "type": "string"
      },
      "FieldRestrictions": {
        "type": "object",
        "properties": {
          "choices": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "valueRequired": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DataTableColumn": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/FieldType"
          },
          "referenceName": {
            "type": "string",
            "nullable": true
          },
          "restrictions": {
            "$ref": "#/components/schemas/FieldRestrictions"
          }
        },
        "additionalProperties": false
      },
      "DataTableType": {
        "enum": [
          "imported",
          "master",
          "application",
          "instance",
          "batch"
        ],
        "type": "string"
      },
      "TableVisibility": {
        "enum": [
          "open",
          "restricted"
        ],
        "type": "string"
      },
      "DataTable": {
        "required": [
          "id",
          "name",
          "teamName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "dataTableId": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "referenceName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataTableColumn"
            },
            "nullable": true
          },
          "isArchived": {
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/DataTableType"
          },
          "visibility": {
            "$ref": "#/components/schemas/TableVisibility"
          },
          "visibleToUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "rowLimit": {
            "type": "integer",
            "format": "int32"
          },
          "columnLimit": {
            "type": "integer",
            "format": "int32"
          },
          "cellLimit": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DataTableExportFormat": {
        "enum": [
          "csv",
          "excel"
        ],
        "type": "string"
      },
      "PagingOptions": {
        "type": "object",
        "properties": {
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "pageToken": {
            "type": "string",
            "nullable": true
          },
          "getAllResults": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DataTablesPage": {
        "type": "object",
        "properties": {
          "dataTables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataTable"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "File": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "sizeInBytes": {
            "type": "integer",
            "format": "int32"
          },
          "displaySize": {
            "type": "string",
            "nullable": true
          },
          "isPublic": {
            "type": "boolean"
          },
          "md5Hash": {
            "type": "string",
            "nullable": true
          },
          "referenceName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FilesPage": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/File"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "InstanceStepStatus": {
        "enum": [
          "pending",
          "active",
          "completed",
          "cancelled",
          "snoozed",
          "skipped",
          "error"
        ],
        "type": "string"
      },
      "Field": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "referenceName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "integer",
            "format": "int32"
          },
          "restrictions": {
            "$ref": "#/components/schemas/FieldRestrictions"
          },
          "fieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceStep": {
        "required": [
          "id",
          "instanceId",
          "name",
          "pushbotId",
          "teamName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "instanceId": {
            "type": "string",
            "format": "uuid"
          },
          "pushbotId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/InstanceStepStatus"
          },
          "assignedTo": {
            "type": "string",
            "nullable": true
          },
          "outputFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Field"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceStatus": {
        "enum": [
          "running",
          "completed",
          "cancelled"
        ],
        "type": "string"
      },
      "FieldVisibility": {
        "enum": [
          "public",
          "internal",
          "confidential",
          "highlyConfidential"
        ],
        "type": "string"
      },
      "InstanceVisibilty": {
        "enum": [
          "open",
          "restricted"
        ],
        "type": "string"
      },
      "Instance": {
        "required": [
          "id",
          "pushbotId",
          "teamName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "pushbotId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstanceStep"
            },
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Field"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/InstanceStatus"
          },
          "fieldVisibility": {
            "$ref": "#/components/schemas/FieldVisibility"
          },
          "visibility": {
            "$ref": "#/components/schemas/InstanceVisibilty"
          },
          "visibleToUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstancesPage": {
        "type": "object",
        "properties": {
          "instances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Instance"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FieldUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "referenceName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StartInstanceRequest": {
        "type": "object",
        "properties": {
          "pushbotId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "inputFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldUpdateRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceStepsPage": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstanceStep"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CompleteStepRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "stepOutputFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldUpdateRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReassignStepRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "assignTo": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Pushbot": {
        "required": [
          "id",
          "name",
          "teamName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "inputFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Field"
            },
            "nullable": true
          },
          "isPublished": {
            "type": "boolean"
          },
          "isArchived": {
            "type": "boolean"
          },
          "fieldVisibility": {
            "$ref": "#/components/schemas/FieldVisibility"
          },
          "instanceVisibility": {
            "$ref": "#/components/schemas/InstanceVisibilty"
          },
          "adminUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "standardUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "taskCountLimit": {
            "type": "integer",
            "format": "int32"
          },
          "fieldCountLimit": {
            "type": "integer",
            "format": "int32"
          },
          "fieldSizeLimit": {
            "type": "integer",
            "format": "int32"
          },
          "fieldTotalSizeLimit": {
            "type": "integer",
            "format": "int32"
          },
          "dataTableRowLimit": {
            "type": "integer",
            "format": "int32"
          },
          "dataTableColumnLimit": {
            "type": "integer",
            "format": "int32"
          },
          "dataTableCellLimit": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PushbotsPage": {
        "type": "object",
        "properties": {
          "pushbots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pushbot"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PushbotImportRequest": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "format": "uuid"
          },
          "password": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PushbotImport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "pushbotId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PushbotExportRequest": {
        "type": "object",
        "properties": {
          "pushbotId": {
            "type": "string",
            "format": "uuid"
          },
          "password": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PushbotExport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "fileId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CredentialsPage": {
        "type": "object",
        "properties": {
          "credentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Credentials"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "User": {
        "required": [
          "email",
          "fullName",
          "id",
          "teamName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UsersPage": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/User"
            },
            "nullable": true,
            "readOnly": true
          },
          "nextPageOptions": {
            "$ref": "#/components/schemas/PagingOptions"
          },
          "nextPageToken": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "Bearer Authorization using User Token credentials",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "Authentication",
      "description": "Provides an authentication token that can be used to call other endpoints"
    },
    {
      "name": "Users",
      "description": "Endpoints for managing users"
    },
    {
      "name": "User Credentials",
      "description": "Endpoints for obtaining and managing user credentials"
    },
    {
      "name": "Pushbots",
      "description": "Endpoints for managing Pushbot process templates"
    },
    {
      "name": "Instances",
      "description": "Endpoints for managing Pushbot Instances"
    },
    {
      "name": "Instance Steps",
      "description": "Endpoints for managing Instance Steps"
    },
    {
      "name": "Files",
      "description": "Endpoints for managing, uploading and downloading files"
    },
    {
      "name": "Data Tables",
      "description": "Endpoints for managing, uploading and downloading data tables"
    }
  ]
}