EPIC API (v2)

Download OpenAPI specification:Download

REST API for interacting with EPIC (https://epic.zenotech.com) services.
Please note this API is in BETA and does not yet contain all EPIC functionality.

billing

billing_limits_list

Return the current limits for the users billing profile

Authorizations:
Bearer

Responses

Response Schema: application/json
required
Array of objects (Limit)

List of limits for all teams linked to the current user's billing profile

object <decimal> (Max limit)

Maximum monthly spend limit for the current user's billing profile. The sum of all user/team limits may not exceed this value

max_limit_str
string (Max limit str) [ 1 .. 30 ] characters

Maximum monthly spend limit for the current user's billing profile as a string in user's display currency

object <decimal> (Total)

The current total monthly spend limit for the current user's billing profile.

total_str
string (Total str) [ 1 .. 30 ] characters

Current total monthly spend limit as a string

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/billing/limits/' 

Response samples

Content type
application/json
{
  • "limits": [
    ],
  • "max_limit": {
    },
  • "max_limit_str": "string",
  • "total": {
    },
  • "total_str": "string"
}

billing_limits_partial_update

Update billing limits for the users billing profile and associated teams

Authorizations:
Bearer
Request Body schema: application/json
required
Array of objects (Limit)

List of limits for all teams linked to the current user's billing profile

Responses

Response Schema: application/json
required
Array of objects (Limit)

List of limits for all teams linked to the current user's billing profile

object <decimal> (Max limit)

Maximum monthly spend limit for the current user's billing profile. The sum of all user/team limits may not exceed this value

max_limit_str
string (Max limit str) [ 1 .. 30 ] characters

Maximum monthly spend limit for the current user's billing profile as a string in user's display currency

object <decimal> (Total)

The current total monthly spend limit for the current user's billing profile.

total_str
string (Total str) [ 1 .. 30 ] characters

Current total monthly spend limit as a string

Request samples

Content type
application/json
{
  • "limits": [
    ]
}

Response samples

Content type
application/json
{
  • "limits": [
    ],
  • "max_limit": {
    },
  • "max_limit_str": "string",
  • "total": {
    },
  • "total_str": "string"
}

catalog

catalog_applications_list

List all available applications and the versions for that application

Authorizations:
Bearer
query Parameters
product_name
string

product_name

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (BatchApplicationList)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/applications/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

catalog_applications_read

Retreive the details for the application with the application product name {product}

Authorizations:
Bearer
path Parameters
application
required
string

Responses

Response Schema: application/json
id
integer (ID)
required
object (ProductName)
Array of objects (BatchApplicationVersionDetails)
permission_to_use
boolean (Permission to use)

Does your account have permission to use this application?

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/applications/%7Bapplication%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "product": {
    },
  • "version": [
    ],
  • "permission_to_use": true
}

catalog_clusters_list

View available cluster queues

Authorizations:
Bearer
query Parameters
cluster_name
string

cluster_name

queue_name
string

queue_name

allowed_apps
string

allowed_apps

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (BatchQueueDetails)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/clusters/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

catalog_clusters_read

Retreive the details for the cluster queue with queue code {queue_code}

Authorizations:
Bearer
path Parameters
queue_code
required
string

Responses

Response Schema: application/json
queue_code
required
string (Queue code) [ 1 .. 100 ] characters
name
string (Name) [ 1 .. 100 ] characters
description
string or null (Description) <= 1000 characters
cluster_name
string (Cluster name) [ 1 .. 100 ] characters
max_runtime
integer (Max runtime) [ 0 .. 2147483647 ]
max_allocation
integer (Max allocation) [ 0 .. 2147483647 ]
reported_avail_tasks
integer or null (Reported avail tasks) [ 0 .. 2147483647 ]
reported_max_tasks
integer or null (Reported max tasks) [ 0 .. 2147483647 ]
required
object (SLA)
maintenance_mode
boolean (Maintenance mode)
required
object (ClusterNodeConfig)
supports_local_submission
boolean (Supports local submission)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/clusters/%7Bqueue_code%7D/' 

Response samples

Content type
application/json
{
  • "queue_code": "string",
  • "name": "string",
  • "description": "string",
  • "cluster_name": "string",
  • "max_runtime": 2147483647,
  • "max_allocation": 2147483647,
  • "reported_avail_tasks": 2147483647,
  • "reported_max_tasks": 2147483647,
  • "sla": {
    },
  • "maintenance_mode": true,
  • "resource_config": {
    },
  • "supports_local_submission": true
}

catalog_desktop_list

List the available node types for desktop instances

Authorizations:
Bearer
query Parameters
limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (DesktopNodeType)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/desktop/' 

Response samples

Content type
application/json
{}

catalog_desktop_read

Get the details of the desktop node type with code node_code

Authorizations:
Bearer
path Parameters
node_code
required
string

Responses

Response Schema: application/json
node_code
string or null (Node code) <= 50 characters

The code for this node type to be used in DesktopNodeLaunchSpec

name
string (Name) [ 1 .. 100 ] characters

This provides the name of this node type

description
string (Description) [ 1 .. 100 ] characters

This provides a detailed description of this node type

cores
integer (Cores) >= 0

Number of cores that this desktop node has

gpus
integer (Gpus) >= 0

Number of gpus that this desktop node has

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/catalog/desktop/%7Bnode_code%7D/' 

Response samples

Content type
application/json
{
  • "node_code": "string",
  • "name": "string",
  • "description": "string",
  • "cores": 0,
  • "gpus": 0
}

config

config_read

Fetch the application configuration for running on . Only accessible to authorised users.

Authorizations:
Bearer
path Parameters
app_code
required
string
queue_code
required
string

Responses

Response Schema: application/json
required
object (ApplicationConfigurationSerialiser)
required
object (Template)
required
Array of objects (EnvironmentVariable)
created
string <date-time> (Created)
modified
string <date-time> (Modified)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/config/%7Bapp_code%7D/%7Bqueue_code%7D/' 

Response samples

Content type
application/json
{
  • "application_configuration": {
    },
  • "environment_script": {
    },
  • "env_variables": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z"
}

data

data_file_list

List all files your user has access to

Authorizations:
Bearer
query Parameters
name
string

name

path
string

path

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (File)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/data/file/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

data_file_read

See the details for a particular file

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)

ID for this folder

meta_data
object (Meta data)

File meta-data

created
string <date-time> (Created)

Creation time

modified
string <date-time> (Modified)
name
string (Name) non-empty

File name

obj_key
string (Obj key) non-empty

S3 key reference

size
integer (Size) [ -9223372036854776000 .. 9223372036854776000 ]
last_modified
string or null <date-time> (Last modified)

Last modified time

folder
integer or null (Folder)

Folder name

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/data/file/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "meta_data": { },
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "obj_key": "string",
  • "size": -9223372036854776000,
  • "last_modified": "2019-08-24T14:15:22Z",
  • "folder": 0
}

data_folder_list

List all folders your user has access to

Authorizations:
Bearer
query Parameters
name
string

name

path
string

path

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (Folder)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/data/folder/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

data_folder_read

See the details for a particular folder

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)

ID for this folder

folder_size
string (Folder size)

Folder size in bytes

created
string <date-time> (Created)

Creation time

modified
string <date-time> (Modified)

Last modified time

name
string (Name) non-empty

Folder name

obj_key
string (Obj key) non-empty

S3 key reference

last_modified
string or null <date-time> (Last modified)

Last modified time

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/data/folder/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "folder_size": "string",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "obj_key": "string",
  • "last_modified": "2019-08-24T14:15:22Z"
}

data_session_list

Get connection details for accessing the EPIC data store. Returns a temporary credenital to upload and download data to EPIC

Authorizations:
Bearer

Responses

Response Schema: application/json
s3_obj_key
string (S3 obj key) non-empty

Root path for EPIC data store

s3_location
string (S3 location) non-empty

S3 Bucket name for EPIC data store

aws_region
string (Aws region)

AWS Region

object (SessionToken)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/data/session/' 

Response samples

Content type
application/json
{
  • "s3_obj_key": "string",
  • "s3_location": "string",
  • "aws_region": "string",
  • "session_token": {
    }
}

desktop

desktop_list

List Desktop instances

Authorizations:
Bearer
query Parameters
limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (DesktopInstance)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/desktop/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

desktop_create

Launch a new desktop instance.

Authorizations:
Bearer
Request Body schema: application/json
node_code
required
string (Node code) non-empty

node_code of the node type to launch. Valid values are obtained from the catalog/desktop/ endpoint

application_version
integer (Application version)
runtime
required
integer (Runtime) >= 1

Runtime in hours to run this desktop node for. This is the maximum runtime as the viz node can be stopped earlier and you will only be charged for the elapsed time

secure_ip
boolean (Secure ip)
Default: false

Should we restrict which IPs can connect to this node?

ip_address
string <ipv4> (Ip address) non-empty

IPv4 Address to restrict connections to this node from

invoice_reference
string (Invoice reference) [ 1 .. 100 ] characters

Invoice reference - this text will appear on the monthly invoice against this nodes charges

required
object (DataSpec)

Input data specification for this desktop

mount_type
required
string (Mount type)
Enum: "online" "offline"

How should the data folder be mounted to the desktop. Offline takes a copy of the data and will not be automatically synced back to the data store.

project
integer (Project) >= -1

Project ID to bill this desktop node against

Responses

Response Schema: application/json
id
integer (ID)
status
string (Status)

Current desktop status

connection_string
string or null (Connection string)

The URL or hostname of the desktop

object (DesktopNodeType)
launched_by
string (Launched by)

Full name of user that launched the desktop

team
string or null (Team)

ID of the active Team for the desktop

created
string <date-time> (Created)
runtime
string (Runtime)

The requested runtime in hours

Request samples

Content type
application/json
{
  • "node_code": "string",
  • "application_version": 0,
  • "runtime": 1,
  • "secure_ip": false,
  • "ip_address": "192.168.0.1",
  • "invoice_reference": "string",
  • "data_path": {
    },
  • "mount_type": "online",
  • "project": -1
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "status": "string",
  • "connection_string": "string",
  • "node_type": {
    },
  • "launched_by": "string",
  • "team": "string",
  • "created": "2019-08-24T14:15:22Z",
  • "runtime": "string"
}

desktop_quote

Provides a price quote based upon the given VizNodeLaunchSpec. This will also provide information as to whether it meets billing budget criteria for the given team / project combination

Authorizations:
Bearer
Request Body schema: application/json
node_code
required
string (Node code) non-empty

node_code of the node type to launch. Valid values are obtained from the catalog/desktop/ endpoint

application_version
integer (Application version)
runtime
required
integer (Runtime) >= 1

Runtime in hours to run this desktop node for. This is the maximum runtime as the viz node can be stopped earlier and you will only be charged for the elapsed time

Responses

Response Schema: application/json
object <decimal> (Cost)

The cost of the requested resource. May only be present if the valid field is true.

valid
boolean (Valid)

Whether the requested spec represents a valid configuration that could be launched

reason
string (Reason)

If the configuration is invalid this string will contain the reason why the configuration is not valid

Request samples

Content type
application/json
{
  • "node_code": "string",
  • "application_version": 0,
  • "runtime": 1
}

Response samples

Content type
application/json
{
  • "cost": {
    },
  • "valid": true,
  • "reason": "string"
}

desktop_read

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)
status
string (Status)

Current desktop status

connection_string
string or null (Connection string)

The URL or hostname of the desktop

object (DesktopNodeType)
launched_by
string (Launched by)

Full name of user that launched the desktop

team
string or null (Team)

ID of the active Team for the desktop

created
string <date-time> (Created)
runtime
string (Runtime)

The requested runtime in hours

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/desktop/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "status": "string",
  • "connection_string": "string",
  • "node_type": {
    },
  • "launched_by": "string",
  • "team": "string",
  • "created": "2019-08-24T14:15:22Z",
  • "runtime": "string"
}

desktop_terminate

Terminate the desktop with step with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{ }

job

job_list

List the jobs instances in EPIC

Authorizations:
Bearer
query Parameters
job_array
string

job_array

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (Job)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/job/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

job_create

Create a new job bssased on the submitted job specification. App and Queue codes can be retreived from the catalog endpoints.

Authorizations:
Bearer
Request Body schema: application/json
name
string (Name) [ 1 .. 100 ] characters
Default: "Job Array"

Name of job array - only required for more than one job

required
object (JobConfiguration)

Job configuration options

required
Array of objects (JobDataBinding)

List of job specs to launch

object (DataSpec)

Input data specification for this desktop

Responses

Response Schema: application/json
Array
id
integer (ID)

The ID for this job

name
string (Name)

Name of this job

app
string (App) [ 1 .. 30 ] characters

Name of the application that this job uses

app_options
object (App options)

Job app options

application_version
string (Application version) non-empty

Application version ID

cost
string (Cost) [ 1 .. 30 ] characters

Maximum cost for running this job

status
string (Status) [ 1 .. 100 ] characters

Current status of this job

submitted_by
string (Submitted by)

Name of the user who submitted this job

submitted_at
string (Submitted at)

Date at which this job was submitted

finished
boolean (Finished)

Has this job finished?

object (BatchQueueDetails)
project
integer (Project) >= 1

Project ID to bill this job against

invoice_reference
string (Invoice reference) [ 1 .. 100 ] characters

Invoice reference - this text will appear on the monthly invoice against this jobs charges

object (JobConfiguration)

Job configuration options

Array of objects (JobStep)

The job steps associated with this Job

object (DataSpec)

Input data specification for this desktop

requires_auth
boolean (Requires auth)

Does this job require additional authorisation?

array
integer (Array)

ID of associated Job Array

Request samples

Content type
application/json
{
  • "name": "Job Array",
  • "config": {
    },
  • "jobs": [
    ],
  • "common_data": {
    }
}

Response samples

Content type
application/json
[
  • {
    }
]

job_quote

Provides a price quote based upon the given BatchJobLaunchSpec. Quotes will be returned for clusters that the user/team has permission to use and that support the requested application, task distribution and runtime. When submitting multiple steps in a the job specification then the task reference may be used to identify individual steps.

Authorizations:
Bearer
Request Body schema: application/json
app_code
required
string (App code) non-empty

The App Code of the application_version to launch. Valid values are obtained from the catalog/applications/ endpoint

project
integer (Project) >= -1

Project ID to bill this job against

required
Array of objects (JobTaskSpec)

List of task definitions that make up this job

queue_code
string (Queue code) non-empty

(Optional) Code of cluster queue for the quote. This will just return the quotes for that queue. If not present the quote will be for all available queues

Responses

Response Schema: application/json
Array of objects (TaskQuote)

List of job quotes for individual tasks in this request

Array of objects (TaskQuote)

List of job quote totals for this request

Request samples

Content type
application/json
{
  • "app_code": "string",
  • "project": -1,
  • "tasks": [
    ],
  • "queue_code": "string"
}

Response samples

Content type
application/json
{
  • "task_quotes": [
    ],
  • "totals": [
    ]
}

job_read

See the details for the job instance with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)

The ID for this job

name
string (Name)

Name of this job

app
string (App) [ 1 .. 30 ] characters

Name of the application that this job uses

app_options
object (App options)

Job app options

application_version
string (Application version) non-empty

Application version ID

cost
string (Cost) [ 1 .. 30 ] characters

Maximum cost for running this job

status
string (Status) [ 1 .. 100 ] characters

Current status of this job

submitted_by
string (Submitted by)

Name of the user who submitted this job

submitted_at
string (Submitted at)

Date at which this job was submitted

finished
boolean (Finished)

Has this job finished?

object (BatchQueueDetails)
project
integer (Project) >= 1

Project ID to bill this job against

invoice_reference
string (Invoice reference) [ 1 .. 100 ] characters

Invoice reference - this text will appear on the monthly invoice against this jobs charges

object (JobConfiguration)

Job configuration options

Array of objects (JobStep)

The job steps associated with this Job

object (DataSpec)

Input data specification for this desktop

requires_auth
boolean (Requires auth)

Does this job require additional authorisation?

array
integer (Array)

ID of associated Job Array

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/job/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "app": "string",
  • "app_options": { },
  • "application_version": "string",
  • "cost": "string",
  • "status": "string",
  • "submitted_by": "string",
  • "submitted_at": "string",
  • "finished": true,
  • "resource": {
    },
  • "project": 1,
  • "invoice_reference": "string",
  • "config": {
    },
  • "job_steps": [
    ],
  • "input_data": {
    },
  • "requires_auth": true,
  • "array": 0
}

job_partial_update

Update the job options for job instance with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
app_options
required
object or null (App options)

Application specific options to update

required
object (JobConfiguration)

Job configuration options

Responses

Response Schema: application/json
app_options
required
object or null (App options)

Application specific options to update

required
object (JobConfiguration)

Job configuration options

Request samples

Content type
application/json
{
  • "app_options": { },
  • "config": {
    }
}

Response samples

Content type
application/json
{
  • "app_options": { },
  • "config": {
    }
}

job_auth_read

Get the authorisation status for job with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
required
boolean (Required)

Is authorisation required for this job?

state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)
permissions
string (Permissions)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/job/%7Bid%7D/auth/' 

Response samples

Content type
application/json
{
  • "required": true,
  • "state": "PENDING",
  • "job": {
    },
  • "user_profile": {
    },
  • "permissions": "string"
}

job_auth_update

Update the authorisation status for job with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)

Responses

Response Schema: application/json
required
boolean (Required)

Is authorisation required for this job?

state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)
permissions
string (Permissions)

Request samples

Content type
application/json
{
  • "state": "PENDING",
  • "job": { },
  • "user_profile": { }
}

Response samples

Content type
application/json
{
  • "required": true,
  • "state": "PENDING",
  • "job": {
    },
  • "user_profile": {
    },
  • "permissions": "string"
}

job_cancel

Cancel a job

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{ }

job_residuals_read

Retreive the residuals for job with ID {id}

Authorizations:
Bearer
path Parameters
id
required
integer

A unique integer value identifying this batch job instance.

query Parameters
variables
Array of strings

Return data values for these variable names

Responses

Response Schema: application/json
variables
required
Array of strings[ items non-empty ]

A list of the available residual variable names

Array of objects (JobResidualData)

The values of an individual residual variable, including xaxis data

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/job/%7Bid%7D/residuals/' 

Response samples

Content type
application/json
{
  • "variables": [
    ],
  • "residual_values": [
    ]
}

jobauth

jobauth_list

Authorizations:
Bearer
query Parameters
limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (JobAuthStatus)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobauth/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

jobauth_read

Get the authorisation status for job with ID {id}

Authorizations:
Bearer
path Parameters
job
required
string

A unique value identifying this job authorisation.

Responses

Response Schema: application/json
required
boolean (Required)

Is authorisation required for this job?

state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)
permissions
string (Permissions)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobauth/%7Bjob%7D/' 

Response samples

Content type
application/json
{
  • "required": true,
  • "state": "PENDING",
  • "job": {
    },
  • "user_profile": {
    },
  • "permissions": "string"
}

jobauth_update

Update the authorisation status for job with ID {id}

Authorizations:
Bearer
path Parameters
job
required
string

A unique value identifying this job authorisation.

Request Body schema: application/json
state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)

Responses

Response Schema: application/json
required
boolean (Required)

Is authorisation required for this job?

state
string (State)
Enum: "PENDING" "AUTHORISED" "REJECTED"
object (JobSummary)
object (UserName)
permissions
string (Permissions)

Request samples

Content type
application/json
{
  • "state": "PENDING",
  • "job": { },
  • "user_profile": { }
}

Response samples

Content type
application/json
{
  • "required": true,
  • "state": "PENDING",
  • "job": {
    },
  • "user_profile": {
    },
  • "permissions": "string"
}

jobrefresh

jobrefresh_create

Create a request to refresh the logs for a running job step with ID {job_step}.

Authorizations:
Bearer
Request Body schema: application/json
job_step
required
integer (Job step)

The ID of the running job step to refresh

response_recieved
boolean (Response recieved)

Has the refresh completed?

Responses

Response Schema: application/json
id
integer (ID)

The ID for this refresh request

job_step
required
integer (Job step)

The ID of the running job step to refresh

response_recieved
boolean (Response recieved)

Has the refresh completed?

Request samples

Content type
application/json
{
  • "job_step": 0,
  • "response_recieved": true
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "job_step": 0,
  • "response_recieved": true
}

jobrefresh_read

Check the progress of a refresh request

Authorizations:
Bearer
path Parameters
id
required
integer

A unique integer value identifying this jobstep response request.

Responses

Response Schema: application/json
id
integer (ID)

The ID for this refresh request

job_step
required
integer (Job step)

The ID of the running job step to refresh

response_recieved
boolean (Response recieved)

Has the refresh completed?

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobrefresh/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "job_step": 0,
  • "response_recieved": true
}

jobstep

jobstep_list

List all the job steps you have read permission for

Authorizations:
Bearer
query Parameters
parent_job
string

parent_job

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (JobStep)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobstep/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

jobstep_read

See the details for the job step with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)

jobstep id

parent_job
integer (Parent job)

The id of the parent job for this step

run_if_previous_step_fails
boolean (Run if previous step fails)

Whether this job step will run if the previous step fails

step_name
required
string (Step name) [ 1 .. 30 ] characters

The name of this job step

node_count
integer (Node count) [ 1 .. 2147483647 ]

Number of nodes this job step will run on

num_tasks
integer (Num tasks) [ 1 .. 2147483647 ]

Number of tasks that will run for this job step

tasks_per_node
integer (Tasks per node) [ 1 .. 2147483647 ]

Number of tasks that will run on each node

threads_per_task
integer (Threads per task) [ 1 .. 2147483647 ]

Number of threads assigned to each task

max_runtime
integer (Max runtime) [ 1 .. 2147483647 ]

Maximum runtime in hours that this job step will run for

status
string or null (Status) <= 50 characters

Status of this jobstep

exit_code
integer or null (Exit code) [ -2147483648 .. 2147483647 ]

Unix exit code for this job step

start
string or null <date-time> (Start)

Time this job step started running

end
string or null <date-time> (End)

Time this job step finished running

wallclock
string or null (Wallclock)
object (JobLog)

The step logs

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobstep/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "parent_job": 0,
  • "run_if_previous_step_fails": true,
  • "step_name": "string",
  • "node_count": 1,
  • "num_tasks": 1,
  • "tasks_per_node": 1,
  • "threads_per_task": 1,
  • "max_runtime": 1,
  • "status": "string",
  • "exit_code": -2147483648,
  • "start": "2019-08-24T14:15:22Z",
  • "end": "2019-08-24T14:15:22Z",
  • "wallclock": "string",
  • "logs": {
    }
}

jobstep_cancel

Cancel job step with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{ }

jobstep_logs_read

Get the logs for the job step with ID {id}

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
stdout
string (Stdout)
stderr
string (Stderr)
app
string (App)
last_update
string (Last update)

Last time the logs were updated

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/jobstep/%7Bid%7D/logs/' 

Response samples

Content type
application/json
{
  • "stdout": "string",
  • "stderr": "string",
  • "app": "string",
  • "last_update": "string"
}

licenses

licenses_list

Authorizations:
Bearer
query Parameters
limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (License)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/licenses/' 

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

licenses_create

Authorizations:
Bearer
Request Body schema: application/json
display_name
required
string (Display name) [ 1 .. 30 ] characters
description
string (Description) non-empty
required
Array of objects (EnvVar)
application
integer or null (Application)

Responses

Response Schema: application/json
id
string <uuid> (Id)
display_name
required
string (Display name) [ 1 .. 30 ] characters
description
string (Description) non-empty
required
Array of objects (EnvVar)
application
integer or null (Application)

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "description": "string",
  • "environment": [
    ],
  • "application": 0
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "display_name": "string",
  • "description": "string",
  • "environment": [
    ],
  • "application": 0
}

licenses_templates

Authorizations:
Bearer
query Parameters
limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
id
string <uuid> (Id)
object (Application)
Array of objects (EnvVarTemplate)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/licenses/templates/' 

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "application": {
    },
  • "environment": [
    ]
}

licenses_read

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
string <uuid> (Id)
active
boolean (Active)
display_name
required
string (Display name) [ 1 .. 30 ] characters
description
string (Description) non-empty
Array of objects (EnvVar)
object (Application)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/licenses/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "active": true,
  • "display_name": "string",
  • "description": "string",
  • "environment": [
    ],
  • "application": {
    }
}

licenses_delete

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Request samples

curl -X DELETE  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/licenses/%7Bid%7D/' 

profile

profile_settings_list

Return details about the settings for the users billing profile

Authorizations:
Bearer

Responses

Response Schema: application/json
id
integer (ID)
display_currency
string (Display currency)
Enum: "GBP" "EUR" "USD"
display_currency_symbol
string (Display currency symbol)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/profile/settings/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "display_currency": "GBP",
  • "display_currency_symbol": "string"
}

projects

projects_list

List the projects you have access to

Authorizations:
Bearer
query Parameters
name
string

name

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects (Project)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/projects/' 

Response samples

Content type
application/json
{}

projects_read

See the details for a project.

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
pk
integer (ID)
project_id
string (Project id) non-empty
description
string or null (Description)
closed
boolean (Closed)
all_users
boolean (All users)
authorized_user_profiles
Array of integers unique
has_budget
boolean (Has budget)
object <decimal> (Spend limit)

Maximum monthly spend limit for this project code.

object <decimal> (Current spend)

Current monthly spend for this project code.

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/projects/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "pk": 0,
  • "project_id": "string",
  • "description": "string",
  • "closed": true,
  • "all_users": true,
  • "authorized_user_profiles": [
    ],
  • "has_budget": true,
  • "spend_limit": {
    },
  • "current_spend": {
    }
}

projects_partial_update

Update the project description or open/close a project.

Authorizations:
Bearer
path Parameters
id
required
string
Request Body schema: application/json
description
string or null (Description)
closed
boolean (Closed)

Responses

Response Schema: application/json
pk
integer (ID)
project_id
string (Project id) non-empty
description
string or null (Description)
closed
boolean (Closed)

Request samples

Content type
application/json
{
  • "description": "string",
  • "closed": true
}

Response samples

Content type
application/json
{
  • "pk": 0,
  • "project_id": "string",
  • "description": "string",
  • "closed": true
}

teams

teams_list

List the teams you are a member of.

Authorizations:
Bearer
query Parameters
name
string

name

role
string
Enum: "user" "admin" "owner"

Team role

limit
integer

Number of results to return per page.

offset
integer

The initial index from which to return the results.

Responses

Response Schema: application/json
count
required
integer
next
string or null <uri>
previous
string or null <uri>
required
Array of objects or null (Team)

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/teams/' 

Response samples

Content type
application/json
{}

teams_read

See the details for a team. You must be a member of the team to see the details.

Authorizations:
Bearer
path Parameters
id
required
string

Responses

Response Schema: application/json
id
integer (ID)

ID for this team

name
string (Name) non-empty

Name of this team

number_of_members
integer (Number of members)

Number of members in this team

user_role
string (User role)

Your role in this team

members
string (Members)

List of user ids and roles for members of this team

Request samples

curl -X GET  \
--header "Authorization:Bearer api_key" \
'http://epic.zenotech.com/api/v2/teams/%7Bid%7D/' 

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "number_of_members": 0,
  • "user_role": "string",
  • "members": "string"
}