Back to top

Athera API

Welcome Atherians!

This is the API for Athera, which can be used to access information about apps, groups, users, sessions and storage. It can even be used to start and stop sessions, control compute jobs and check on their progress.

Be sure to also check out:

  • Athera-Python - Python wrappers around this API, with OAuth token generation utility: athera-python

  • Athera’s file sync API - a gRPC service providing rapid data transfer (coming soon)

  • Orbit API - A local API embedded in Athera’s Desktop Agent: Orbit

The base URL for all queries is: https://api.athera.io/api/v1

Authentication

Client ID and Secret

In order to use the Athera API with your own code, the first requirement is to generate a Client ID and Client Secret, which identifies your application or script.

The Client ID can be generated in the Athera Developer Dashboard. Log in to https://developer.athera.io/, then follow these steps:

  • Select the Org you wish to make a client for in the Org dropdown, top right.

  • Click ‘Create New Client’.

  • Add a Client Name, eg ‘DemoApp’.

  • Supply an optional externally-hosted Logo URL to aid identification in the Developer Dashboard.

  • Add at least one authorized Callback URL, eg ’http://localhost:5000/callback'. See the OAuth section below for more information.

  • Press ‘Create’.

The Developer Dashboard now shows your new Client, including Client ID and Client Secret. Press ‘Show’ to reveal the Client Secret (which self-hides after 60 seconds).

The Client ID and Client Secret will be used by your Client application during the OAuth authentication process. This is perfect for applications which are not distributed. If you intend to distribute your application, a more complex process will be required. Contact support@athera.io for more information.

Authentication via a Client is superior to the API key approach, as the access can be restricted to a limited ‘scope’, rather than account-wide.

OAuth

Athera uses an OAuth 2.0 process. A good background can be found here.

See athera-python for an implementation of the Auth0 flow, and a utility to help generate tokens.

Authentication Token

Once authentication has completed, the (JWT) token is generated. All queries should pass the following headers:

Authorization: bearer: <token>
active-group: <group_id>

All queries are processed according to the system view available to the identified user. The Athera Context of operations is defined by the supplied group_id where appropriate. Only Contexts permissible to the user can be accessed, and the associated Entitlements, Quotas and other restrictions apply as normal.

Responses

  • 200 OK

  • 400 Bad Request - The group_id is malformed, or a payload is incorrect.

  • 403 Forbidden - The group_id provided by the ‘active-group’ header is either inaccessible or non-existent.

  • 404 Not Found - The resource specified is either inaccessible or non-existent within the scope of the provided group_id

Apps

Apps represent the containerized applications which can be scheduled by Athera.

Get App Families

List App Families
GET/families

Get details of all App Families. An App Family has a major version like Nuke 11, and can group an interactive and a compute App. This endpoint ONLY returns App Families for which the current Group has an active Entitlement.

Example URI

GET /families
Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "families": [
    {
      "id": "bcac026e-252e-42bf-85ca-122a6f04bd3d",
      "name": "Nuke",
      "vendor": "Foundry",
      "apps": []
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "families": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json

Get App

Get App by ID
GET/apps/{app_id}

Get details of a single App. These details contain the App configuration, such as vendor, version, compatible machine types.

Example URI

GET /apps/7745a326-e29a-42a7-a723-e827f0782778
URI Parameters
HideShow
app_id
string (required) Example: 7745a326-e29a-42a7-a723-e827f0782778

ID of the App

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Machine Profiles

Get Machine Profiles

Get Machine Profiles
GET/machine_profiles

Get the list of machine profiles supported by Athera. A boolean is set for each profile to let user now what machine he/she has entitlement for.

Example URI

GET /machine_profiles
Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "machine_profiles": [
    {
      "id": "44ad7cc4-1d71-48f4-ae9a-c57f4f7c9792",
      "name": "cpu-12-128",
      "preemptible": false,
      "available": true,
      "slots": {
        "cpu": 12,
        "gpu": 0,
        "mem": 128
      }
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "machine_profiles": {
      "type": "array"
    }
  }
}

Groups

Groups form a hierarchical structure of Orgs, Projects, Teams. Projects are children of Orgs, Teams are children of Projects.

Groups are used to indicate the Context of Sessions (where the usage will be attributed).

Orgs

Get Orgs
GET/orgs

Get Orgs (top-level groups) available to the authenticated user.

Example URI

GET /orgs
Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "groups": [
    {
      "id": "561bdbff-285b-43af-af59-020a5e070ead",
      "parentId": "561bdbff-285b-43af-af59-020a5e070ead",
      "name": "Foundry",
      "type": "Organisation",
      "logo": "https://s3-eu-west-1.amazonaws.com/forge-static-public/project-pane/F-dot_160.png"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "groups": {
      "type": "array"
    }
  }
}

Get Group details

Get Group
GET/groups/{group_id}

Get details of a Group. The authenticated user must be a member.

Example URI

GET /groups/561bdbff-285b-43af-af59-020a5e070ead
URI Parameters
HideShow
group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "561bdbff-285b-43af-af59-020a5e070ead",
  "parentId": "561bdbff-285b-43af-af59-020a5e070ead",
  "name": "Foundry",
  "type": "Organisation",
  "logo": "https://s3-eu-west-1.amazonaws.com/forge-static-public/project-pane/F-dot_160.png"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "parentId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "logo": {
      "type": "string"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Group Children

Get Group Children
GET/groups/{group_id}/children

Get the children of a group. The authenticated user must be a member.

Example URI

GET /groups/561bdbff-285b-43af-af59-020a5e070ead/children
URI Parameters
HideShow
group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "groups": [
    {
      "id": "561bdbff-285b-43af-af59-020a5e070ead",
      "parentId": "561bdbff-285b-43af-af59-020a5e070ead",
      "name": "Foundry",
      "type": "Organisation",
      "logo": "https://s3-eu-west-1.amazonaws.com/forge-static-public/project-pane/F-dot_160.png"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "groups": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Whitelist

Sessions are normally ‘air-gapped’ with no internet access. By using the whitelist, a list of permitted endpoints become accessible from within session environments in the associated context, or a child context.

Get Whitelist
GET/groups/{group_id}/whitelist

List whitelisted endpoints associated with the group and all parent groups. Endpoints are returned as a dictionary where keys represent group_id.

Example URI

GET /groups/1cc4f911-16ce-490b-b150-3f814322883e/whitelist
URI Parameters
HideShow
group_id
string (required) Example: 1cc4f911-16ce-490b-b150-3f814322883e

ID of the group

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "group_id": "",
  "endpoints": {}
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "group_id": {
      "type": "string"
    },
    "endpoints": {
      "type": "object",
      "properties": {}
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json

Update Whitelist
PUT/groups/{group_id}/whitelist

Update whitelist endpoints for a group. Any existing endpoints are overwritten.

Example URI

PUT /groups/1cc4f911-16ce-490b-b150-3f814322883e/whitelist
URI Parameters
HideShow
group_id
string (required) Example: 1cc4f911-16ce-490b-b150-3f814322883e

ID of the group

Request
HideShow
Headers
Content-Type: application/json
Body
{
  "endpoints": [
    {
      "endpoint": "www.foo.com",
      "endpoint_type": "HOSTNAME"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "endpoints": {
      "type": "array"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "endpoints": [
    {
      "endpoint": "www.foo.com",
      "endpoint_type": "HOSTNAME"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "endpoints": {
      "type": "array"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json

Users

Users are people who are members of Groups.

Group Users

Get Group Users
GET/groups/{group_id}/users

Get all the users in a Group.

Example URI

GET /groups/561bdbff-285b-43af-af59-020a5e070ead/users
URI Parameters
HideShow
group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "groups": [
    {
      "id": "438c62af-fc00-4bac-87b4-762994dced6d",
      "username": "simon",
      "profile": {
        "firstName": "Simon",
        "lastName": "Pickles"
      },
      "avatar": "``"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "groups": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Storage

Athera-side storage and caching. All access is based on Context.

  • Drivers represent individual storage resources, either provided by Athera or externally connected (GCS, S3, Dropbox, etc).

  • Mounts use Drivers to access the storage resource, and provide a mapping between the storage resource and its mount location.

Create Storage Driver

Create Storage Driver
POST/storage/driver

When a Driver is created, a default Mount is also created. The response will indicate the resulting mount location (where the storage will appear in Athera Sessions).

Example URI

POST /storage/driver
Request  GCS
HideShow
Headers
Content-Type: application/json
Body
{
  "name": "gcs test",
  "gcs": {
    "bucket_id": "< your_bucket_id >",
    "client_secret": "< your_base64_encoded_service_account >"
  },
  "option": {
    "create_default_mount": true
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "gcs": {
      "type": "object",
      "properties": {
        "bucket_id": {
          "type": "string",
          "description": "your_bucket_id"
        },
        "client_secret": {
          "type": "string",
          "description": "The Service Account json encoded in base64"
        }
      },
      "required": [
        "bucket_id",
        "client_secret"
      ]
    },
    "option": {
      "type": "object",
      "properties": {
        "create_default_mount": {
          "type": "boolean",
          "description": "Needs to be set to true for the time being"
        }
      },
      "required": [
        "create_default_mount"
      ]
    }
  }
}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "33ad7cc4-1d71-48f4-ae9a-c57f4f7c9792",
  "name": "gcs test",
  "type": "GCS",
  "mounts": [
    {
      "id": "32bb5764-2495-4238-98ce-9a537ea42277",
      "name": "gcs test",
      "type": "MountTypeGroup",
      "mountLocation": "/data/gcs/gcs-test"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "mounts": {
      "type": "array"
    }
  }
}
Request  S3
HideShow
Headers
Content-Type: application/json
Body
{
  "name": "s3 test",
  "gcs": {
    "region": "eu-west-1",
    "bucket_id": "< your_bucket_id >",
    "client_key": "< your_client_key >",
    "client_secret": "< your_client_secret >"
  },
  "option": {
    "create_default_mount": true
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "gcs": {
      "type": "object",
      "properties": {
        "region": {
          "type": "string"
        },
        "bucket_id": {
          "type": "string"
        },
        "client_key": {
          "type": "string"
        },
        "client_secret": {
          "type": "string"
        }
      },
      "required": [
        "bucket_id",
        "client_key",
        "client_secret"
      ]
    },
    "option": {
      "type": "object",
      "properties": {
        "create_default_mount": {
          "type": "boolean",
          "description": "Needs to be set to true for the time being"
        }
      },
      "required": [
        "create_default_mount"
      ]
    }
  }
}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "44ad7cc4-1d71-48f4-ae9a-c57f4f7c9792",
  "name": "s3 test",
  "type": "S3",
  "mounts": [
    {
      "id": "31bb5764-2495-4238-98ce-9a537ea42277",
      "name": "s3 test",
      "type": "MountTypeGroup",
      "mountLocation": "/data/s3/s3-test"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "mounts": {
      "type": "array"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "code": "INVALID_FORMAT",
      "message": "..."
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Driver id not found"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    }
  }
}

List Storage Driver

List Storage Drivers
GET/storage/drivers

List storage drivers associated with the authenticated user and provided group-id.

Example URI

GET /storage/drivers
Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "drivers": [
    {
      "id": "bcac026e-252e-42bf-85ca-122a6f04bd3d",
      "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
      "name": "gcs test",
      "type": "GCS",
      "mounts": [
        {
          "id": "32bb5764-2495-4238-98ce-9a537ea42277",
          "name": "gcs test",
          "type": "MountTypeGroup",
          "mountLocation": "/data/gcs/gcs-test"
        }
      ]
    },
    {
      "id": "ccac026e-252e-42bf-85ca-122a6f04bd3d",
      "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
      "name": "s3 test",
      "type": "S3",
      "mounts": [
        {
          "id": "31bb5764-2495-4238-98ce-9a537ea42277",
          "name": "s3 test",
          "type": "MountTypeGroup",
          "mountLocation": "/data/s3/s3-test"
        }
      ]
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "drivers": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json

Driver

Get Driver
GET/storage/driver/{driver_id}

Get information about the driver.

  • presentIndexingTime is the date on which a running reindex started. If the reindex is not in progress, please ignore this value.

Example URI

GET /storage/driver/bcac026e-252e-42bf-85ca-122a6f04bd3d
URI Parameters
HideShow
driver_id
string (required) Example: bcac026e-252e-42bf-85ca-122a6f04bd3d

ID of the Storage Driver

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "bcac026e-252e-42bf-85ca-122a6f04bd3d",
  "name": "gcs test",
  "type": "GCS",
  "mounts": [
    {
      "id": "32bb5764-2495-4238-98ce-9a537ea42277",
      "name": "gcs test",
      "type": "MountTypeGroup",
      "mountLocation": "/data/gcs/gcs-test"
    }
  ],
  "statuses": [
    {
      "region": "US-West",
      "path": "/folder1/folder2",
      "inProgress": true,
      "presentScanTime": "2017-10-17T13:00:00.000Z",
      "lastScanTime": "2017-10-17T13:00:00.000Z",
      "lastScanDuration": 65322
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "mounts": {
      "type": "array"
    },
    "statuses": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json

Reindex Of Storage Driver
POST/storage/driver/{driver_id}

Refresh Athera’s internal index of the storage driver. You can either drop the current cache or rescan a given location of the driver depending on the type parameter (can be full rescan with path="/").

Example URI

POST /storage/driver/bcac026e-252e-42bf-85ca-122a6f04bd3d
URI Parameters
HideShow
driver_id
string (required) Example: bcac026e-252e-42bf-85ca-122a6f04bd3d

ID of the Storage Driver

Request
HideShow
Headers
Content-Type: application/json
Body
{
  "type": "rescan|drop",
  "path": "\"/\""
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "type"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "code": "INVALID_FORMAT",
      "message": "..."
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json

Delete Storage Driver
DELETE/storage/driver/{driver_id}

Deleting a driver will inherently delete all its associated mounts. You will no longer have access to the mounts associated to this driver. This action is irreversible.

Example URI

DELETE /storage/driver/bcac026e-252e-42bf-85ca-122a6f04bd3d
URI Parameters
HideShow
driver_id
string (required) Example: bcac026e-252e-42bf-85ca-122a6f04bd3d

ID of the Storage Driver

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "bcac026e-252e-42bf-85ca-122a6f04bd3d",
  "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
  "name": "gcs test",
  "type": "GCS",
  "mounts": [
    {
      "id": "32bb5764-2495-4238-98ce-9a537ea42277",
      "name": "gcs test",
      "type": "MountTypeGroup",
      "mountLocation": "/data/gcs/gcs-test"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "groupId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "mounts": {
      "type": "array"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "code": "INVALID_FORMAT",
      "message": "..."
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Driver id not found"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    }
  }
}

Permissions

Get Permissions
GET/storage/permissions/{mount_id}/{group_id}?inheritance={inheritance}

Get files permissions.

If inheritance is set to true, returns permissions for parent groups as well.

Example URI

GET /storage/permissions/30bb5764-2495-4238-98ce-9a537ea42277/561bdbff-285b-43af-af59-020a5e070ead?inheritance=inheritance
URI Parameters
HideShow
mount_id
string (required) Example: 30bb5764-2495-4238-98ce-9a537ea42277

ID of the mount

group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

inheritance
boolean (required) 
Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "permissions": [
    {
      "path": "/folder1/folder2/fileX",
      "access": "RO"
    }
  ],
  "inherited": {
    "groupId": "561bdbff",
    "permissions": [
      {
        "path": "/folder1/folder2/fileX",
        "access": "RO"
      }
    ]
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "permissions": {
      "type": "array"
    },
    "inherited": {
      "type": "object",
      "properties": {
        "groupId": {
          "type": "string",
          "description": "285b-43af-af59-020a5e070ead` (string)"
        },
        "permissions": {
          "type": "array"
        }
      }
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  500
HideShow
Headers
Content-Type: application/json

Update Permissions
PUT/storage/permissions/{mount_id}/{group_id}?inheritance={inheritance}

Updates Permissions for the group using this mount. Note, the group can differ from the current, but must be a child. You must be owner of the group you’re setting permissions for.

Permissions are set on folder level ONLY. Permission for “/” must be present.

Access options are:

  • RW: Read/Write

  • RO: Read Only

  • NA: Not Available (hidden)

Path must be unique, absolute (starts with ‘/’) and ends with trailing ‘/’ as well.

Example URI

PUT /storage/permissions/30bb5764-2495-4238-98ce-9a537ea42277/561bdbff-285b-43af-af59-020a5e070ead?inheritance=inheritance
URI Parameters
HideShow
mount_id
string (required) Example: 30bb5764-2495-4238-98ce-9a537ea42277

ID of the mount

group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

inheritance
boolean (required) 
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "permissions": [
    {
      "path": "/folder1/folder2/fileX",
      "access": "RO"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "permissions": {
      "type": "array"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "permissions": [
    {
      "path": "/folder1/folder2/fileX",
      "access": "RO"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "permissions": {
      "type": "array"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json

Test Permissions
POST/storage/permissions/{mount_id}/{group_id}/test

Allows user to check permissions for given path.

Paths are tested against the set of Permissions including those provided via inheritance from parent groups.

Example URI

POST /storage/permissions/30bb5764-2495-4238-98ce-9a537ea42277/561bdbff-285b-43af-af59-020a5e070ead/test
URI Parameters
HideShow
mount_id
string (required) Example: 30bb5764-2495-4238-98ce-9a537ea42277

ID of the mount

group_id
string (required) Example: 561bdbff-285b-43af-af59-020a5e070ead

ID of the Group

Request
HideShow
Headers
Content-Type: application/json
Body
{
  "paths": [
    "Hello, world!"
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "paths": {
      "type": "array"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "permissions": [
    {
      "path": "/folder1/folder2/fileX",
      "access": "RO"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "permissions": {
      "type": "array"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json

Sessions

Sessions are instances of the Apps, either scheduled to run on Athera, running or closing down. They can interactive or compute (headless).

Get Session

Get Session Details
GET/sessions/{session_id}

Get details of the session with the provided Session ID.

Example URI

GET /sessions/b0f081ec-db60-456e-963e-1d43ce4582ac
URI Parameters
HideShow
session_id
string (required) Example: b0f081ec-db60-456e-963e-1d43ce4582ac

ID of the Session

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "b0f081ec-db60-456e-963e-1d43ce4582ac",
  "name": "nostalgic dragonfly",
  "appId": "7745a326-e29a-42a7-a723-e827f0782778",
  "userId": "438c62af-fc00-4bac-87b4-762994dced6d",
  "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
  "status": "READY",
  "region": "europe-west1",
  "startTime": "2017-11-17T13:03:42.690Z",
  "endTime": "0001-01-01T00:00:00.000Z"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "appId": {
      "type": "string"
    },
    "userId": {
      "type": "string"
    },
    "groupId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "startTime": {
      "type": "string"
    },
    "endTime": {
      "type": "string"
    }
  }
}
Response  404
HideShow
Headers
Content-Type: application/json

Start Session

Start Session
POST/sessions

Request a Session is started with the provided configuration. The requesting UserID is derived from the API key. Note a successful request returns the UUID of the started session.

Example URI

POST /sessions
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "appId": "7745a326-e29a-42a7-a723-e827f0782778",
  "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
  "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
  "region": "europe-west1",
  "name": "nostalgic dragonfly",
  "display": {
    "dpi": 72,
    "height": 1080,
    "width": 1920
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "appId": {
      "type": "string"
    },
    "groupId": {
      "type": "string"
    },
    "profileID": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "display": {
      "type": "object",
      "properties": {
        "dpi": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "width": {
          "type": "number"
        }
      }
    }
  },
  "required": [
    "appId",
    "groupId",
    "region",
    "name",
    "display"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
"Hello, world!"
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "string"
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json

Stop Session

Stop Session
POST/sessions/{session_id}/stop

Request the Session with the provided ID is terminated. A session which is pending (CREATED, WAITING_FOR_HOST, WAITING_FOR_CONTAINER) cannot (yet) be stopped. Wait until the session starts then repeat the request.

Example URI

POST /sessions/b0f081ec-db60-456e-963e-1d43ce4582ac/stop
URI Parameters
HideShow
session_id
string (required) Example: b0f081ec-db60-456e-963e-1d43ce4582ac

ID of the Session

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Session logs

Session logs
GET/sessions/{session_id}/logs

Request the logs for the session corresponding to the provided ID.

Example URI

GET /sessions/b0f081ec-db60-456e-963e-1d43ce4582ac/logs
URI Parameters
HideShow
session_id
string (required) Example: b0f081ec-db60-456e-963e-1d43ce4582ac

ID of the Session

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
"Hello, world!"
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "string"
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

User Sessions

Get User Sessions
GET/users/{user_id}/sessions

Get all sessions owned by the provided User. This can be different to the authenticated users but must be in an accessible Context.

Example URI

GET /users/438c62af-fc00-4bac-87b4-762994dced6d/sessions
URI Parameters
HideShow
user_id
string (required) Example: 438c62af-fc00-4bac-87b4-762994dced6d

ID of the user

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "sessions": [
    {
      "id": "b0f081ec-db60-456e-963e-1d43ce4582ac",
      "name": "nostalgic dragonfly",
      "appId": "7745a326-e29a-42a7-a723-e827f0782778",
      "userId": "438c62af-fc00-4bac-87b4-762994dced6d",
      "groupId": "561bdbff-285b-43af-af59-020a5e070ead",
      "status": "READY",
      "region": "europe-west1",
      "startTime": "2017-11-17T13:03:42.690Z",
      "endTime": "0001-01-01T00:00:00.000Z"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "sessions": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Compute

Athera’s Compute system allows for background tasks to be orchestrated. Compute Jobs are split into Parts which normally execute a subset of the total framerange. Each part uses a headless App session to complete the task. The provided App must be an App type intended for compute tasks, as defined by a key ATHERA_COMPUTE existing in the App’s environment

Get Jobs

Get Jobs
GET/compute/jobs?current_page={current_page}&page_size={page_size}&status={status}&user_id={user_id}

Get all Jobs scheduled by the group. Response is paginated.

Query string parameters:

  • provide filtering by User ID or Job Status

  • define requested pages of results.

Here is a list of Job statuses:

  • CREATED

  • PENDING

  • PROCESSING

  • COMPLETE

  • FAILURE

  • CLEANUP

  • DENIED

  • INTERRUPTED

  • CANCELING

  • CANCELED

When providing a User ID filter, the specified user does not have to match the querying user (identified by api key), but should reside within the same Context.

By default, the first page is 0 with 10 results (if you want the next page, you will specify in your request current_page=1).

Example URI

GET /compute/jobs?current_page=1&page_size=20&status=PENDING&user_id=438c62af-fc00-4bac-87b4-762994dced6d
URI Parameters
HideShow
current_page
number (optional) Example: 1

Gets page corresponding to provided number. Default 0

page_size
number (optional) Example: 20

Sets the size of the page returned. Default 10

status
string (optional) Example: PENDING

Filter-by-status.

user_id
string (optional) Example: 438c62af-fc00-4bac-87b4-762994dced6d

Filter-by-UserID.

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "pagination": {
    "totalRecords": 42,
    "currentPage": 1,
    "pages": 5,
    "recordsPerPage": 10
  },
  "jobs": [
    {
      "id": "c48262b3-c45f-409e-980f-2d2b74f30b76",
      "computeData": {
        "userID": "438c62af-fc00-4bac-87b4-762994dced6d",
        "groupID": "561bdbff-285b-43af-af59-020a5e070ead",
        "appID": "7745a326-e29a-42a7-a723-e827f0782778",
        "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
        "filePath": "/home/pickles/vertical.nk",
        "name": "vertical_v1",
        "frameRange": {
          "start": 1,
          "finish": 100,
          "increment": 1
        },
        "region": "europe-west1",
        "arguments": [
          "-X",
          "Write1"
        ]
      },
      "status": "COMPLETE",
      "partCount": 2,
      "nodeCount": 2
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pagination": {
      "type": "object",
      "properties": {
        "totalRecords": {
          "type": "number"
        },
        "currentPage": {
          "type": "number"
        },
        "pages": {
          "type": "number"
        },
        "recordsPerPage": {
          "type": "number"
        }
      }
    },
    "jobs": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Get Job

Get Job
GET/compute/jobs/{job_id}

Get the Job with the provided ID. The Job must have been scheduled by a group the user has access to.

Example URI

GET /compute/jobs/c48262b3-c45f-409e-980f-2d2b74f30b76
URI Parameters
HideShow
job_id
string (required) Example: c48262b3-c45f-409e-980f-2d2b74f30b76

ID of the Job

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "c48262b3-c45f-409e-980f-2d2b74f30b76",
  "computeData": {
    "userID": "438c62af-fc00-4bac-87b4-762994dced6d",
    "groupID": "561bdbff-285b-43af-af59-020a5e070ead",
    "appID": "7745a326-e29a-42a7-a723-e827f0782778",
    "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
    "filePath": "/home/pickles/vertical.nk",
    "name": "vertical_v1",
    "frameRange": {
      "start": 1,
      "finish": 100,
      "increment": 1
    },
    "region": "europe-west1",
    "arguments": [
      "-X",
      "Write1"
    ]
  },
  "status": "COMPLETE",
  "partCount": 2,
  "nodeCount": 2
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "userID",
        "groupID",
        "appID",
        "filePath",
        "name",
        "frameRange",
        "region",
        "arguments"
      ]
    },
    "status": {
      "type": "string"
    },
    "partCount": {
      "type": "number"
    },
    "nodeCount": {
      "type": "number"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Schedule Job

Schedule Job
POST/compute/jobs

Request a new job to be scheduled. Jobs are always started by the authenticated user in the provided group (access to the Context is validated server-side).

Jobs are actually performed by one or more Parts. Parts launch headless compute Sessions so of course, the Group must have access to the necessary Entitlements.

Once all the Parts of a Job have COMPLETED or FAILED, the Job’s status is updated accordingly.

Example URI

POST /compute/jobs
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "computeData": {
    "userID": "438c62af-fc00-4bac-87b4-762994dced6d",
    "groupID": "561bdbff-285b-43af-af59-020a5e070ead",
    "appID": "7745a326-e29a-42a7-a723-e827f0782778",
    "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
    "filePath": "/home/pickles/vertical.nk",
    "name": "vertical_v1",
    "frameRange": {
      "start": 1,
      "finish": 100,
      "increment": 1
    },
    "region": "europe-west1",
    "arguments": [
      "-x",
      "{{FILE_PATH}}",
      "{{FRAME_RANGE_START}}-{{FRAME_RANGE_FINISH}}"
    ]
  },
  "partCount": "3",
  "nodeCount": "1"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "region"
      ]
    },
    "partCount": {
      "type": "string"
    },
    "nodeCount": {
      "type": "string"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "11111111-c45f-409e-980f-2d2b74f30b76",
  "computeData": {
    "userID": "``",
    "groupID": "``",
    "appID": "``",
    "profileID": "``",
    "filePath": "``",
    "name": "``",
    "frameRange": {
      "start": 0,
      "finish": 0,
      "increment": 0
    },
    "region": "``",
    "arguments": [
      "``"
    ]
  },
  "status": "``",
  "partCount": 0,
  "nodeCount": 0
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "region"
      ]
    },
    "status": {
      "type": "string"
    },
    "partCount": {
      "type": "number"
    },
    "nodeCount": {
      "type": "number"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Response  403
HideShow
Headers
Content-Type: application/json

Stop Job

Stop Job
POST/compute/jobs/{job_id}/stop

Stop the Job with the provided ID. The Job must have been scheduled by a group the user has access to.

The Job must also be running. Jobs with a PENDING status cannot (yet) be stopped and an error will be returned. Wait until the session starts then repeat the request.

Example URI

POST /compute/jobs/c48262b3-c45f-409e-980f-2d2b74f30b76/stop
URI Parameters
HideShow
job_id
string (required) Example: c48262b3-c45f-409e-980f-2d2b74f30b76

ID of the Job

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "c48262b3-c45f-409e-980f-2d2b74f30b76",
  "computeData": {
    "userID": "``",
    "groupID": "``",
    "appID": "``",
    "profileID": "``",
    "filePath": "``",
    "name": "``",
    "frameRange": {
      "start": 0,
      "finish": 0,
      "increment": 0
    },
    "region": "``",
    "arguments": [
      "``"
    ]
  },
  "status": "``",
  "partCount": 0,
  "nodeCount": 0
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "region"
      ]
    },
    "status": {
      "type": "string"
    },
    "partCount": {
      "type": "number"
    },
    "nodeCount": {
      "type": "number"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Retry Job

Retry Job
POST/compute/jobs/{job_id}/retry

Reschedule the Job. Only FAILED, DENIED or CANCELED parts will be scheduled. Unstarted Jobs will be executed in full. A new job will be created for this occasion, its id will be returned in the response.

Example URI

POST /compute/jobs/c48262b3-c45f-409e-980f-2d2b74f30b76/retry
URI Parameters
HideShow
job_id
string (required) Example: c48262b3-c45f-409e-980f-2d2b74f30b76

ID of the Job to retry

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "a684c5bb-c45f-409e-980f-2d2b74f30b76",
  "computeData": {
    "userID": "``",
    "groupID": "``",
    "appID": "``",
    "profileID": "``",
    "filePath": "``",
    "name": "``",
    "frameRange": {
      "start": 0,
      "finish": 0,
      "increment": 0
    },
    "region": "``",
    "arguments": [
      "``"
    ]
  },
  "status": "``",
  "partCount": 0,
  "nodeCount": 0
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "region"
      ]
    },
    "status": {
      "type": "string"
    },
    "partCount": {
      "type": "number"
    },
    "nodeCount": {
      "type": "number"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Get Parts

Get Parts
GET/compute/jobs/{job_id}/parts

Get all Parts which make up a Job, The Job needs to have been scheduled by a group the user has access to.

Example URI

GET /compute/jobs/c48262b3-c45f-409e-980f-2d2b74f30b76/parts
URI Parameters
HideShow
job_id
string (required) Example: c48262b3-c45f-409e-980f-2d2b74f30b76

ID of the job

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "parts": [
    {
      "id": "1cc4f911-16ce-490b-b150-3f814322883e",
      "computeData": {
        "userID": "438c62af-fc00-4bac-87b4-762994dced6d",
        "groupID": "561bdbff-285b-43af-af59-020a5e070ead",
        "appID": "7745a326-e29a-42a7-a723-e827f0782778",
        "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
        "filePath": "/home/pickles/vertical.nk",
        "name": "vertical_v1",
        "frameRange": {
          "start": 1,
          "finish": 100,
          "increment": 1
        },
        "region": "europe-west1",
        "arguments": [
          "-X",
          "Write1"
        ]
      },
      "jobID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
      "status": "COMPLETE",
      "log": "Hello, world!",
      "attempts": 1
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "parts": {
      "type": "array"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Get Part

Get Part
GET/compute/parts/{part_id}

Get the Part with the provided ID. The Job (which the part is associated with) must have been scheduled by a group the user has access to.

Example URI

GET /compute/parts/1cc4f911-16ce-490b-b150-3f814322883e
URI Parameters
HideShow
part_id
string (required) Example: 1cc4f911-16ce-490b-b150-3f814322883e

ID of the part

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "1cc4f911-16ce-490b-b150-3f814322883e",
  "computeData": {
    "userID": "438c62af-fc00-4bac-87b4-762994dced6d",
    "groupID": "561bdbff-285b-43af-af59-020a5e070ead",
    "appID": "7745a326-e29a-42a7-a723-e827f0782778",
    "profileID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
    "filePath": "/home/pickles/vertical.nk",
    "name": "vertical_v1",
    "frameRange": {
      "start": 1,
      "finish": 100,
      "increment": 1
    },
    "region": "europe-west1",
    "arguments": [
      "-X",
      "Write1"
    ]
  },
  "jobID": "c48262b3-c45f-409e-980f-2d2b74f30b76",
  "status": "COMPLETE",
  "log": "Hello, world!",
  "attempts": 1
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "computeData": {
      "type": "object",
      "properties": {
        "userID": {
          "type": "string"
        },
        "groupID": {
          "type": "string"
        },
        "appID": {
          "type": "string"
        },
        "profileID": {
          "type": "string"
        },
        "filePath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frameRange": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number"
            },
            "finish": {
              "type": "number"
            },
            "increment": {
              "type": "number"
            }
          },
          "required": [
            "start",
            "finish"
          ]
        },
        "region": {
          "type": "string"
        },
        "arguments": {
          "type": "array"
        }
      },
      "required": [
        "userID",
        "groupID",
        "appID",
        "filePath",
        "name",
        "frameRange",
        "region",
        "arguments"
      ]
    },
    "jobID": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "log": {
      "type": "string"
    },
    "attempts": {
      "type": "number"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Response  404
HideShow
Headers
Content-Type: application/json

Generated by aglio on 05 Apr 2019