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 storage : custom columns API'
contact:
name: Optilogic Support
email: support@optilogic.com
servers:
- url: https://api.optilogic.app/v0
tags:
- name: 'storage : custom columns'
description: Manage database custom columns
paths:
/storage/{storageName}/customizations:
get:
tags:
- 'storage : custom columns'
summary: Get database schema (tables and views) for a SQL storage item
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: table
in: query
description: Name of the database table. (Blank or missing for all tables)
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GetCustomizations'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/storages/db-column-types:
get:
tags:
- 'storage : custom columns'
summary: Get supported column data types
description: Retrieve a list of all supported column data types for the database.
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GetColumnDataTypes'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- APIKeyHeader: []
/storage/{storageName}/custom-column:
post:
tags:
- 'storage : custom columns'
summary: Create a new custom column in a database table
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: tableName
in: query
description: Name of the database table
required: true
schema:
type: string
- name: columnName
in: query
description: Name of the column to be created
required: true
schema:
type: string
- name: dataType
in: query
description: Data type of the new column (numeric,integer,text,etc.)
required: true
schema:
type: string
- name: characterMaximumLength
in: query
description: Maximum length of characters for the new column. (Only required if actual data type is character based and not 'text')
required: false
schema:
type: integer
- name: isNullable
in: query
description: Whether the new column can be NULL
required: false
schema:
type: boolean
- name: defaultValue
in: query
description: Default value for the new column
required: false
schema:
type: string
- name: isTableKeyColumn
in: query
description: Whether the column is a key column for the table
required: false
schema:
type: boolean
- name: trueDataType
in: query
description: 'The actual(physical) storage type of the table in postgres. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)'
required: false
schema:
type: string
- name: isRequired
in: query
description: Whether the column is required
required: false
schema:
type: boolean
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCustomColumn'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CustomColumnsResponseError'
'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: []
get:
tags:
- 'storage : custom columns'
summary: Get details of a single custom column in a database table
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: tableName
in: query
description: Name of the database table
required: true
schema:
type: string
- name: columnName
in: query
description: Name of the database column
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GetCustomColumn'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CustomColumnsResponseError'
'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: []
put:
tags:
- 'storage : custom columns'
summary: Update a custom column
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: tableName
in: query
description: Name of the database table
required: true
schema:
type: string
- name: columnName
in: query
description: Name of the column to be updated
required: true
schema:
type: string
- name: newColumnName
in: query
description: New name for the column (if being renamed)
required: false
schema:
type: string
- name: dataType
in: query
description: 'Data type of the column. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)'
required: false
schema:
type: string
- name: characterMaximumLength
in: query
description: Maximum length of characters for the column
required: false
schema:
type: integer
- name: isNullable
in: query
description: Whether the column can be NULL
required: false
schema:
type: boolean
- name: defaultValue
in: query
description: Default value for the column
required: false
schema:
type: string
- name: isTableKeyColumn
in: query
description: Whether the column is a key column for the table
required: false
schema:
type: boolean
- name: trueDataType
in: query
description: The true data type of the column
required: false
schema:
type: string
- name: isRequired
in: query
description: Whether the column is required
required: false
schema:
type: boolean
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomColumn'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CustomColumnsResponseError'
'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:
- 'storage : custom columns'
summary: Delete a custom column
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: tableName
in: query
description: Name of the database table
required: true
schema:
type: string
- name: columnName
in: query
description: Name of the database column
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteCustomColumn'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CustomColumnsResponseError'
'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: []
/storage/{storageName}/custom-columns:
get:
tags:
- 'storage : custom columns'
summary: Get all custom columns for a table
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
- name: tableName
in: query
description: Name of the database table
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllCustomColumns'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CustomColumnsResponseError'
'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: []
/storage/{storageName}/custom-columns/validate:
get:
tags:
- 'storage : custom columns'
summary: Validate custom columns
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateCustomColumns'
'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: []
/storage/{storageName}/custom-columns/repair:
post:
tags:
- 'storage : custom columns'
summary: Repair custom columns
description: ''
parameters:
- name: storageName
in: path
description: Name of the target storage device
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/RepairCustomColumns'
'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: []
components:
schemas:
Error:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
correlationId:
type: string
format: uuid
GetAllCustomColumns:
type: object
properties:
result:
type: string
format: string
example: success
count:
type: integer
example: 3
customColumns:
type: array
items:
$ref: '#/components/schemas/CustomColumn'
DeleteCustomColumn:
type: object
properties:
result:
type: string
format: string
example: success
message:
type: string
UpdateCustomColumn:
type: object
properties:
result:
type: string
format: string
example: success
id:
type: integer
example: 106
tableName:
type: string
example: your_table
columnName:
type: string
example: your_column
dataType:
type: string
example: integer
characterMaximumLength:
type: integer
example: 255
isNullable:
type: boolean
example: false
defaultValue:
type: string
example: null
isTableKeyColumn:
type: boolean
example: false
trueDataType:
type: string
example: text
isRequired:
type: boolean
example: true
message:
type: string
CustomColumn:
type: object
properties:
id:
type: integer
example: 106
tableName:
type: string
example: your_table
columnName:
type: string
example: your_column
dataType:
type: string
example: integer
characterMaximumLength:
type: integer
example: 255
isNullable:
type: boolean
example: false
defaultValue:
type: string
example: null
isTableKeyColumn:
type: boolean
example: false
trueDataType:
type: string
example: text
isRequired:
type: boolean
example: true
CustomColumnIssue:
type: object
properties:
type:
type: string
example: UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch
enum:
- UnspecifiedError
- TableWithNoColumns
- MissingTable
- MissingColumn
- ExtraColumn
- TypeMismatch
- MissingMetadata
- MetadataDiscrepancy
- IsNullableMismatch
- UpdateTypedView
- MissingTypedView
- DefaultValueMismatch
- MaxLengthMismatch
tableName:
type: string
columnName:
type: string
expected:
example: types:string, number, bool, null etc.
actual:
example: types:string, number, bool, null etc.
description:
type: string
ValidateCustomColumns:
type: object
properties:
result:
type: string
format: string
example: success
count:
type: integer
example: 4
issues:
type: array
items:
$ref: '#/components/schemas/CustomColumnIssue'
CreateCustomColumn:
type: object
properties:
result:
type: string
format: string
example: success
GetCustomColumn:
type: object
properties:
result:
type: string
format: string
example: success
customColumn:
type: object
properties:
id:
type: integer
example: 106
tableName:
type: string
example: your_table
columnName:
type: string
example: your_column
dataType:
type: string
example: integer
characterMaximumLength:
type: integer
example: 255
isNullable:
type: boolean
example: false
defaultValue:
type: string
example: null
isTableKeyColumn:
type: boolean
example: false
trueDataType:
type: string
example: text
isRequired:
type: boolean
example: true
CustomColumnsResponseError:
type: object
properties:
result:
type: string
message:
type: string
errorDetails:
type: array
items:
type: object
properties:
type:
example: UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch
type: string
tableName:
type: string
columnName:
type: string
expected:
example: types:string, number, bool, null etc.
actual:
example: types:string, number, bool, null etc.
description:
type: expected value
required:
- result
- message
- errorDetails
Forbidden:
type: object
properties:
result:
type: string
format: string
error:
type: string
format: string
message:
type: string
format: string
correlationId:
type: string
format: uuid
GetCustomizations:
type: object
properties:
result:
type: string
format: string
schemas:
type: array
items:
properties:
tables:
type: array
items:
properties:
name:
description: the name of the table
type: string
columns:
type: array
items:
properties:
name:
description: the name of the column
type: string
dataType:
description: the sql data type of the column
type: string
isCustom:
description: whether the table is custom or not
type: boolean
default: false
views:
type: array
items:
properties:
name:
description: the name of the table
type: string
columns:
type: array
items:
properties:
name:
description: the name of the column
type: string
dataType:
description: the sql data type of the column
type: string
isCustom:
description: whether the table is custom or not
type: boolean
default: false
RepairCustomColumns:
type: object
properties:
result:
type: string
format: string
example: success
repairedCount:
type: integer
example: 3
errorsCount:
type: integer
example: 3
repaired:
type: array
items:
$ref: '#/components/schemas/CustomColumnIssue'
errors:
type: array
items:
$ref: '#/components/schemas/CustomColumnIssue'
GetColumnDataTypes:
type: object
properties:
result:
type: string
format: string
example: success
count:
type: integer
example: 31
dataTypes:
type: array
items:
type: string
example:
result: success
count: 33
dataTypes:
- name: bit
supportsMaxLength: true
- name: bool
supportsMaxLength: false
- name: bytea
supportsMaxLength: false
- name: character
supportsMaxLength: true
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-KEY
externalDocs:
description: Find out more about Optilogic
url: https://optilogic.com