openapi: 3.2.0
info:
description: "All Optilogic users can view the endpoint documentation below, upgrade to a paid account to gain access.
Once you have api access, use the `refreshApiKey` endpoint with your account login information or use the `Quick Start` form below to get started.\n### Installing Additional Python Packages \nWhen a job is run - such as when using the **Job POST** endpoint - the system will check the directoryPath specified in the POST call for a file named `requirements.txt`. If the file exists, then the system will attempt to install all packages specified by running `pip install -r requirements.txt` before running the file specified in the filePath parameter.\n### Accessing your Files \nYour files are stored in the */projects* directory of the workspace. Files saved in this directory are available to your *Atlas* workspace and to REST API endpoints.\nAll directory paths passed as a *directoryPath*, *sourceDirectoryPath*, or *targetDirectoryPath* parameter are relative to the */projects* directory.\nThis means you must **not** include */projects* as part of the path string.\n\nExample:\n - directoryPath = \"pyomo-examples/models/diet-problem\"\n - filePath = \"diet-problem.py\"\n\nExample:\n - directoryPath = \".\"\n - filePath = \"my-model.py\"\n\n
\n\n## Example Application \n\nOptiJS Demo\n\nThis demo application uses the OptiJS client library to run and monitor jobs from Python modules on a users' account. Custom applications can be quickly created on top of the Optilogic API using the OptiJS and OptiPy client libraries.\n\n\n
\n"
version: 1.0.0
title: Optilogic REST Workspace API
contact:
name: Optilogic Support
email: support@optilogic.com
servers:
- url: https://api.optilogic.app/v0
tags:
- name: workspace
description: Get information about a workspace, including job and file information
paths:
/workspaces:
get:
tags:
- workspace
summary: Get a list of available workspaces in an account
description: ''
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceList'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}:
get:
tags:
- workspace
summary: Get information about a workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace name to get information
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Workspace'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/jobs:
get:
tags:
- workspace
summary: List the jobs for a specific workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace to list jobs from
required: true
schema:
type: string
- name: command
in: query
description: Filter by command property
required: false
schema:
type: string
- name: history
in: query
description: Filter by submitted property. Number of days or 'All'. Default is 7.
required: false
schema:
type: string
- name: runSecsMax
in: query
description: Filter by runTime property. Maximum seconds (list only where runTime is less than)
required: false
schema:
type: integer
- name: runSecsMin
in: query
description: Filter by runTime property. Minimum seconds (list only where runTime is greater than)
required: false
schema:
type: integer
- name: status
in: query
description: Filter by status property
required: false
schema:
type: string
enum:
- submitted
- starting
- started
- running
- canceling
- done
- stopping
- stopped
- cancelled
- error
- name: tags
in: query
description: Filter by tags property
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobList'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/jobs/stats:
get:
tags:
- workspace
summary: Get the stats only for jobs for a specific workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace to list jobs from
required: true
schema:
type: string
- name: command
in: query
description: Filter by command property
required: false
schema:
type: string
- name: history
in: query
description: Filter by submitted property. Number of days or 'All'. Default is 7.
required: false
schema:
type: string
- name: runSecsMax
in: query
description: Filter by runTime property. Maximum seconds (list only where runTime is less than)
required: false
schema:
type: integer
- name: runSecsMin
in: query
description: Filter by runTime property. Minimum seconds (list only where runTime is greater than)
required: false
schema:
type: integer
- name: status
in: query
description: Filter by status property
required: false
schema:
type: enum
enum:
- submitted"
- starting
- started
- running
- canceling
- done
- stopping
- stopped
- cancelled
- error
- name: tags
in: query
description: Filter by tags property
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobListStats'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/job:
post:
tags:
- workspace
summary: Queue a job
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace to run a job from
required: true
schema:
type: string
- name: directoryPath
in: query
description: Path to folder/directory (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: filename
in: query
description: Name of the file to run
required: true
schema:
type: string
- name: command
in: query
description: Modify job behavior to use one of Optilogic's Applied Research tools
required: false
schema:
type: string
enum:
- run
- presolve
- run_model
default: run
- name: commandArgs
in: query
description: 'Additional arguments for the selected command
*Note*: This string is included as provided. Directory and file paths (if any) are **not** inherently relative to */projects* as discussed in [Accessing your Files](#accessing-your-files)
*Example*: "/tmp/some_file.txt --verbose"
'
required: false
schema:
type: string
- name: resourceConfig
in: query
description: Resource configuration (cpu and ram) used to run a job
required: false
schema:
type: string
enum:
- mini
- 4XS
- 3XS
- 2XS
- XS
- S
- M
- L
- XL
- 2XL
- 3XL
- 4XL
default: 3XS
- name: tags
in: query
description: Comma-separated list of tags for the job.
required: false
schema:
type: string
- name: timeout
in: query
description: Maximum job runtime in seconds. The job will be canceled if it runs past this value.
required: false
schema:
type: integer
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobPost'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
/{workspace}/job/{jobKey}:
get:
tags:
- workspace
summary: Get job information
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace where the job is running
required: true
schema:
type: string
- name: jobKey
in: path
description: Key of target job
required: true
schema:
type: string
- name: op
in: query
description: Operation - 'status' gets the job status, 'log' downloads a zip file with job info, results, and errors, 'result' downloads the job's result file, 'error' downloads the job's error file
required: false
schema:
type: string
enum:
- status
- log
- result
- error
default: status
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Job'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
delete:
tags:
- workspace
summary: Stop a queued or running job
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace where the job is running
required: true
schema:
type: string
- name: jobKey
in: path
description: Key of target job
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobDelete'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/jobBatch/jobify:
post:
tags:
- workspace
summary: Queue a list of jobs
description: Allows you to queue jobs from a list of python modules.
parameters:
- name: workspace
in: path
description: Name of the workspace that contains your python modules.
required: true
schema:
type: string
- name: resourceConfig
in: query
description: Resource configuration (cpu and ram) used for any jobs that will be queued.
required: false
schema:
type: string
enum:
- mini
- 4XS
- 3XS
- 2XS
- XS
- S
- M
- L
- XL
- 2XL
- 3XL
- 4XL
default: 3XS
- name: tags
in: query
description: Comma-separated list of tags for the jobs that will queued.
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobifyPost'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
requestBody:
content:
application/json:
schema:
type: object
properties:
batchItems:
type: array
example:
- pyModulePath: /projects/My Files/Advanced Model Template/Advanced Model Template_gurobi.py
- pyModulePath: /projects/Model Library/MIP Optimization/cutting_sheet_metal/cutting_sheet_metal.py
commandArgs: arg1 arg2
timeout: 300
items:
type: object
properties:
pyModulePath:
description: The path to the python module that will be run.
type: string
required: true
commandArgs:
description: Arguments to send to the python module.
type: string
required: false
timeout:
description: Maximum job runtime in seconds. The job will be canceled if it runs past this value.
type: integer
required: false
description: Sequential list of python modules to be queued
required: true
/{workspace}/jobBatch/jobify/searchNRun:
post:
tags:
- workspace
summary: Queue a list of jobs from a list of search terms
description: Allows you to send a list of search terms and queue all matching python modules as jobs.
parameters:
- name: workspace
in: path
description: Name of the workspace that contains your python modules.
required: true
schema:
type: string
- name: resourceConfig
in: query
description: Resource configuration (cpu and ram) used for any jobs that will be queued.
required: false
schema:
type: string
enum:
- mini
- 4XS
- 3XS
- 2XS
- XS
- S
- M
- L
- XL
- 2XL
- 3XL
- 4XL
default: 3XS
- name: tags
in: query
description: Comma-separated list of tags for the jobs that will queued.
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobifyPost'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
requestBody:
content:
application/json:
schema:
type: object
properties:
batchItems:
type: array
example:
- pySearchTerm: Transportation
commandArgs: -hours 48
- pySearchTerm: MIP Optimization/flow_shop_scheduling
timeout: 300
items:
type: object
properties:
pySearchTerm:
description: Search term that allows us to find the right python modules.
type: string
required: true
commandArgs:
description: Arguments to send to the matching python modules.
type: string
required: false
timeout:
description: Maximum job runtime in seconds. All matches will be canceled if they run past this value.
type: integer
required: false
description: Sequential list of search items. Matches will be queued as new jobs.
required: true
/{workspace}/jobBatch/backToBack:
post:
tags:
- workspace
summary: Run a list of python modules
description: Run a list of python modules, as a single job, back to back, one after another.
parameters:
- name: workspace
in: path
description: Name of the workspace that contains your python modules.
required: true
schema:
type: string
- name: resourceConfig
in: query
description: Resource configuration (cpu and ram) used to run this job.
required: false
schema:
type: string
enum:
- mini
- 4XS
- 3XS
- 2XS
- XS
- S
- M
- L
- XL
- 2XL
- 3XL
- 4XL
default: 3XS
- name: tags
in: query
description: Comma-separated list of tags for this job.
required: false
schema:
type: string
- name: timeout
in: query
description: Maximum job runtime in seconds. The job will be canceled if it runs past this value.
required: false
schema:
type: integer
- name: verboseOutput
in: query
description: When enabled, adds descriptive information to the output.
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BatchPost'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
requestBody:
content:
application/json:
schema:
type: object
properties:
batchItems:
type: array
example:
- pyModulePath: /projects/My Files/Advanced Model Template/Advanced Model Template_gurobi.py
- pyModulePath: /projects/Model Library/MIP Optimization/cutting_sheet_metal/cutting_sheet_metal.py
commandArgs: arg1 arg2
timeout: 300
items:
type: object
properties:
pyModulePath:
description: The python module to run. The full path is required.
type: string
required: true
commandArgs:
description: Arguments to send to the python module.
type: string
required: false
timeout:
description: Maximum job runtime in seconds for this python module.
type: integer
required: false
description: List of python modules. They will be run sequentially, in this order.
required: true
/{workspace}/jobBatch/backToBack/searchNRun:
post:
tags:
- workspace
summary: Run a list of matching python modules.
description: Allows you to send a list, of search terms, and run all matching python modules, back to back in one job.
parameters:
- name: workspace
in: path
description: Name of the workspace that contains your python modules.
required: true
schema:
type: string
- name: resourceConfig
in: query
description: Resource configuration (cpu and ram) used for this job.
required: false
schema:
type: string
enum:
- mini
- 4XS
- 3XS
- 2XS
- XS
- S
- M
- L
- XL
- 2XL
- 3XL
- 4XL
default: 3XS
- name: tags
in: query
description: Comma-separated list of tags for this job.
required: false
schema:
type: string
- name: timeout
in: query
description: Maximum job runtime in seconds. The job will be canceled if it runs past this value.
required: false
schema:
type: integer
- name: verboseOutput
in: query
description: When enabled, adds descriptive information to the output.
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BatchPost'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
requestBody:
content:
application/json:
schema:
type: object
properties:
batchItems:
type: array
example:
- pySearchTerm: Transportation
commandArgs: -hours 48
- pySearchTerm: MIP Optimization/flow_shop_scheduling
timeout: 300
items:
type: object
properties:
pySearchTerm:
description: Search term that allows us to find the right python modules.
type: string
required: true
commandArgs:
description: Arguments to send to the matching python modules.
type: string
required: false
timeout:
description: Maximum runtime in seconds. A match will be canceled if it runs past this value.
type: integer
required: false
description: Sequential list of search items. All matching python modules will be run before we look at the next search item.
required: true
/{workspace}/files:
get:
tags:
- workspace
summary: List all user files in the workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace to list files from
required: true
schema:
type: string
- name: filter
in: query
description: Search term to filter results
required: false
schema:
type: string
- name: maxDepth
in: query
description: Limit how many directories deep the search will iterate
required: false
schema:
type: integer
- name: baseDir
in: query
description: Optional starting directory to list files from
required: false
schema:
type: string
- name: includeDir
in: query
description: If true the response will include an array of all directory paths encountered
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FileList'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/job/{jobKey}/ledger:
get:
tags:
- workspace
summary: Get records from the specified job's ledger
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace where the job was ran
required: true
schema:
type: string
- name: jobKey
in: path
description: Key of target job
required: true
schema:
type: string
- name: keys
in: query
description: Comma-separated string - Limits records to those whose key appears in the list. No value will return all records
required: false
schema:
type: string
default: ''
- name: limit
in: query
description: Limit how many records will be returned
required: false
schema:
type: integer
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobLedger'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/job/{jobKey}/metrics:
get:
tags:
- workspace
summary: Get metrics gathered while the job was running
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace where the job was ran
required: true
schema:
type: string
- name: jobKey
in: path
description: Key of target job
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobMetrics'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/job/{jobKey}/metrics/stats:
get:
tags:
- workspace
summary: Get a roll-up of metric statistics gathered while the job was running
description: ''
parameters:
- name: workspace
in: path
description: Name of the workspace where the job was ran
required: true
schema:
type: string
- name: jobKey
in: path
description: Key of target job
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/JobMetricsStats'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/file/copy:
post:
tags:
- workspace
summary: Copy a file within a workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace in which the file will be copied
required: true
schema:
type: string
- name: sourceDirectoryPath
in: query
description: Path to the source file (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: sourceFilename
in: query
description: Name of the source file in the workspace
required: true
schema:
type: string
- name: targetDirectoryPath
in: query
description: Desired path of the new file in the workspace (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: targetFilename
in: query
description: Desired name of the new file in the workspace
required: true
schema:
type: string
- name: overwrite
in: query
description: Overwrite existing file if there is one
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/CopyFile'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileCopy'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileCopy'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileCopy'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'412':
description: File Already Exists
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileCopy'
security:
- APIKeyHeader: []
/{workspace}/file/share:
post:
tags:
- workspace
summary: Share a file with other users
description: ''
parameters:
- name: workspace
in: path
description: Workspace from which to share
required: true
schema:
type: string
- name: sourceDirectoryPath
in: query
description: Path to the source file (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: sourceFilename
in: query
description: Name of the source file in the workspace
required: true
schema:
type: string
- name: targetUsers
in: query
description: Comma-delimited list of users to share to (usernames or emails)
required: true
schema:
type: string
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/FileShare'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileShare'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileShare'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFileShare'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
/{workspace}/file/{directoryPath}/{filename}:
get:
tags:
- workspace
summary: Get a file from a specific workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace where the file exists
required: true
schema:
type: string
- name: directoryPath
in: path
description: Path to the file (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: filename
in: path
description: Name of the file
required: true
schema:
type: string
- name: op
in: query
description: Operation - 'download' downloads the file, 'status' gets the file info and status
required: false
schema:
type: string
enum:
- status
- download
default: status
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
post:
tags:
- workspace
summary: Upload a file to a workspace
description: ''
parameters:
- name: content-type
in: header
description: Only 'application/octet-stream' is supported
required: true
schema:
type: string
- name: content-length
in: header
description: Size of the file being uploaded
required: true
schema:
type: string
- name: workspace
in: path
description: Workspace where the file will be uploaded
required: true
schema:
type: string
- name: directoryPath
in: path
description: Path to the file destination (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: filename
in: path
description: Desired name of the file in the workspace
required: true
schema:
type: string
- name: overwrite
in: query
description: Overwrite existing file if there is one
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/UploadFile'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'412':
description: File already exists
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
delete:
tags:
- workspace
summary: Delete a specific file from a workspace
description: ''
parameters:
- name: workspace
in: path
description: Workspace where the file exists
required: true
schema:
type: string
- name: directoryPath
in: path
description: Path to the file (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: filename
in: path
description: Name of the file
required: true
schema:
type: string
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/FileDelete'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/{workspace}/folder/share:
post:
tags:
- workspace
summary: Share a folder with other users
description: ''
parameters:
- name: workspace
in: path
description: Workspace from which to share
required: true
schema:
type: string
- name: sourceDirectoryPath
in: query
description: Path to the source directory (see [Accessing your Files](#accessing-your-files))
required: true
schema:
type: string
- name: targetUsers
in: query
description: Comma-delimited list of users to share to (usernames or emails)
required: true
schema:
type: string
- name: includeHidden
in: query
description: Include hidden files contained in the folder
required: false
schema:
type: boolean
enum:
- false
- true
default: false
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/FolderShare'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFolderShare'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFolderShare'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorFolderShare'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
security:
- APIKeyHeader: []
components:
schemas:
JobMetricsStats:
type: object
properties:
result:
type: string
format: string
max:
type: object
properties:
memoryPercent:
type: number
format: double
memoryResident:
type: number
format: double
memoryAvaliable:
type: number
format: double
cpuPercent:
type: number
format: double
cpuUsed:
type: number
format: double
cpuAvaliable:
type: number
format: double
processCount:
type: integer
format: int64
count:
type: integer
format: int64
FileList:
type: object
required:
- result
- count
- files
properties:
result:
type: string
format: string
count:
type: integer
format: int64
files:
type: array
items:
$ref: '#/components/schemas/FileShortInfoPath'
directories:
type: array
items:
type: string
JobDetailsInfo:
type: object
properties:
workspace:
type: string
format: string
directoryPath:
type: string
format: string
filename:
type: string
format: string
resourceConfig:
$ref: '#/components/schemas/JobDetailsResourceConfig'
tags:
type: string
format: string
timeout:
type: integer
format: int64
JobLedger:
type: object
properties:
result:
type: string
format: string
count:
type: integer
format: int64
records:
type: array
items:
type: object
properties:
timestamp:
type: integer
format: int64
datetime:
type: string
format: date-time
key:
type: string
format: string
message:
type: string
format: string
JobifyPost:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
count:
type: integer
format: int64
jobKeys:
type: array
items:
type: string
format: uuid
errors:
type: array
items:
type: string
FileDelete:
type: object
properties:
result:
type: string
format: string
fileInfo:
$ref: '#/components/schemas/FileMicroInfo'
JobDetailsResourceConfig:
type: object
properties:
name:
type: string
format: string
cpu:
type: string
format: string
ram:
type: string
format: string
run_rate:
type: integer
format: int64
FolderShare:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
sourceFileInfo:
type: object
properties:
directoryPath:
type: string
format: string
targetUsers:
type: string
format: string
jobsCount:
type: integer
format: int64
jobs:
type: array
items:
properties:
jobKey:
type: string
format: uuid
result:
type: string
format: string
erroredCount:
type: integer
format: int64
errored:
type: array
items:
properties:
jobKey:
type: string
format: uuid
result:
type: string
format: string
FileMicroInfo:
type: object
properties:
filename:
type: string
format: string
directoryPath:
type: string
format: string
FileShortInfoPath:
type: object
properties:
filename:
type: string
format: string
directoryPath:
type: string
format: string
filePath:
type: string
format: string
contentLength:
type: integer
format: int64
Error:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
correlationId:
type: string
format: uuid
FileShare:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
sourceFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
targetUsers:
type: string
format: string
jobsCount:
type: integer
format: int64
jobs:
type: array
items:
properties:
jobKey:
type: string
format: uuid
result:
type: string
format: string
erroredCount:
type: integer
format: int64
errored:
type: array
items:
properties:
jobKey:
type: string
format: uuid
result:
type: string
format: string
JobListStats:
type: object
properties:
result:
type: string
format: string
count:
type: integer
format: int64
statusCounts:
$ref: '#/components/schemas/JobStatusCounts'
tagCounts:
$ref: '#/components/schemas/JobTagCounts'
filters:
$ref: '#/components/schemas/JobListFilters'
ErrorFileShare:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
sourceFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
targetUsers:
type: string
format: string
correlationId:
type: string
format: uuid
WorkspaceList:
type: object
properties:
result:
type: string
format: string
count:
type: integer
format: int64
workspaces:
type: array
items:
$ref: '#/components/schemas/WorkspaceInfo'
JobTagCounts:
type: object
properties:
tag:
type: integer
format: int64
ErrorFolderShare:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
sourceDirectoryPath:
type: string
format: string
targetUsers:
type: string
format: string
includeHidden:
type: boolean
format: boolean
correlationId:
type: string
format: uuid
JobPost:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
jobKey:
type: string
format: uuid
jobInfo:
$ref: '#/components/schemas/JobDetailsInfo'
ErrorFileCopy:
type: object
properties:
result:
type: string
format: string
copyStatus:
type: string
format: string
error:
type: string
format: string
sourceFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
targetFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
correlationId:
type: string
format: uuid
File:
type: object
properties:
result:
type: string
format: string
workspace:
type: string
format: string
filename:
type: string
format: string
directoryPath:
type: string
format: string
filePath:
type: string
format: string
lastModified:
type: string
format: date-time
contentLength:
type: integer
format: int64
date:
type: string
format: date-time
fileCreatedOn:
type: string
format: date-time
fileLastWriteOn:
type: string
format: date-time
fileChangeOn:
type: string
format: date-time
JobList:
type: object
properties:
result:
type: string
format: string
count:
type: integer
format: int64
statusCounts:
$ref: '#/components/schemas/JobStatusCounts'
tagCounts:
$ref: '#/components/schemas/JobTagCounts'
filters:
$ref: '#/components/schemas/JobListFilters'
jobs:
type: array
items:
$ref: '#/components/schemas/JobInfo'
JobMetrics:
type: object
properties:
result:
type: string
format: string
max:
type: object
properties:
memoryPercent:
type: number
format: double
memoryResident:
type: number
format: double
memoryAvaliable:
type: number
format: double
cpuPercent:
type: number
format: double
cpuUsed:
type: number
format: double
cpuAvaliable:
type: number
format: double
processCount:
type: integer
format: int64
count:
type: integer
format: int64
records:
type: array
items:
type: object
properties:
timestamp:
type: integer
format: int64
datetime:
type: string
format: date-time
memoryPercent:
type: number
format: double
memoryResident:
type: number
format: double
memoryAvaliable:
type: number
format: double
cpuPercent:
type: number
format: double
cpuUsed:
type: number
format: double
cpuAvaliable:
type: number
format: double
processCount:
type: integer
format: int64
Job:
type: object
properties:
result:
type: string
format: string
jobKey:
type: string
format: uuid
submittedDatetime:
type: string
format: date-time
startDatetime:
type: string
format: date-time
endDatetime:
type: string
format: date-time
runTime:
type: string
format: timespan
status:
type: string
format: string
phase:
type: string
format: string
jobInfo:
$ref: '#/components/schemas/JobDetailsInfo'
JobInfo:
type: object
properties:
jobKey:
type: string
format: uuid
submittedDatetime:
type: string
format: date-time
startDatetime:
type: string
format: date-time
endDatetime:
type: string
format: date-time
runTime:
type: string
format: timespan
status:
type: string
format: string
phase:
type: string
format: string
jobInfo:
$ref: '#/components/schemas/JobDetailsInfo'
Forbidden:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
message:
type: string
format: string
correlationId:
type: string
format: uuid
JobDelete:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
jobKey:
type: string
format: uuid
status:
type: string
format: string
jobInfo:
$ref: '#/components/schemas/JobDetailsInfo'
JobListFilters:
type: object
properties:
command:
type: string
format: string
history:
type: string
format: string
runSecsMax:
type: string
format: string
runSecsMin:
type: string
format: string
status:
type: string
format: string
tags:
type: string
format: string
FileShortInfo:
type: object
properties:
filename:
type: string
format: string
directoryPath:
type: string
format: string
contentLength:
type: integer
format: int64
CopyFile:
type: object
properties:
result:
type: string
format: string
copyStatus:
type: string
format: string
message:
type: string
format: string
sourceFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
targetFileInfo:
$ref: '#/components/schemas/FileMicroInfo'
UploadFile:
type: object
properties:
result:
type: string
format: string
fileInfo:
$ref: '#/components/schemas/FileShortInfo'
Workspace:
type: object
properties:
result:
type: string
format: string
status:
type: string
format: string
description: workspace state
name:
type: string
format: string
key:
type: string
format: string
stack:
type: string
format: string
BatchPost:
type: object
properties:
result:
type: string
format: string
message:
type: string
format: string
jobKey:
type: string
format: uuid
batch:
type: string
format: string
jobInfo:
$ref: '#/components/schemas/JobDetailsInfo'
JobStatusCounts:
type: object
properties:
submitted:
type: integer
format: int64
starting:
type: integer
format: int64
started:
type: integer
format: int64
running:
type: integer
format: int64
done:
type: integer
format: int64
stopping:
type: integer
format: int64
stopped:
type: integer
format: int64
canceling:
type: integer
format: int64
cancelled:
type: integer
format: int64
error:
type: integer
format: int64
WorkspaceInfo:
type: object
properties:
status:
type: string
format: string
description: workspace state
name:
type: string
format: string
key:
type: string
format: string
stack:
type: string
format: string
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-KEY
externalDocs:
description: Find out more about Optilogic
url: https://optilogic.com