Applications

Explore this section for comprehensive information on endpoints related to the deployment, management, and operation of applications within our cloud software API environment.

Get a list of applications

get
Responses
200

Success

get
/api/v1/servers/applications/GetApplications
GET /api/v1/servers/applications/GetApplications HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "id": "text",
      "cluster": "text",
      "status": "text",
      "tenant": "text",
      "createdBy": "text",
      "privateIp": "text",
      "publicIp": "text",
      "resourcePool": "text",
      "dns": "text",
      "sshUsername": "text",
      "applicationCatalogItemName": "text",
      "applicationCatalogItemVersionName": "text",
      "hardwarePackageName": "text",
      "persistedDirectAttachedStorage": true,
      "personalSharedStorage": true,
      "tenantSharedStorage": true
    }
  ]
}

Get detailed information about a specific application

get
Query parameters
IdstringRequired

The application name

Example: my-jupyter-application
ClusterstringRequired

The cluster you're operating on

Example: Msc1
Responses
200

Success

get
/api/v1/servers/applications/GetApplicationDetails
GET /api/v1/servers/applications/GetApplicationDetails?Id=my-jupyter-application&Cluster=Msc1 HTTP/1.1
Host: 
Accept: */*
{
  "instanceDetails": {
    "id": "text",
    "cluster": "text",
    "status": "text",
    "statusReason": "text",
    "statusMessage": "text",
    "privateIp": "text",
    "publicIp": "text",
    "imageCmdOverride": "text",
    "environmentVariables": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "readinessWatcherPort": 1,
    "proxyPort": 1,
    "createdBy": "text",
    "tenant": "text",
    "resourcePool": "text",
    "nodeSelector": "text",
    "creationTime": "2025-12-05T14:34:30.782Z",
    "lastUpdated": "2025-12-05T14:34:30.782Z",
    "dns": "text",
    "persistedDirectAttachedStorage": true,
    "personalSharedStorage": true,
    "tenantSharedStorage": true,
    "runAsRoot": true,
    "containerUid": 1,
    "containerGid": 1
  },
  "applicationCatalogItem": {
    "name": "text",
    "applicationSourceDetailsUrl": "text",
    "applicationSourceOwner": "text",
    "versions": [
      {
        "name": "text",
        "imageUrl": "text",
        "imageLastPushDate": "2025-12-05T14:34:30.782Z",
        "platform": "text",
        "launchType": "text",
        "releaseNotesUrl": "text",
        "accelerator": "text"
      }
    ]
  },
  "hardwarePackage": {
    "name": "text",
    "description": "text",
    "gpuCount": 1,
    "gpuType": "text",
    "gpuBrand": "text",
    "gpuName": "text",
    "vcpusCount": 1,
    "memoryGb": 1,
    "directAttachedStorageGb": 1,
    "pricePerHour": 1,
    "clusters": [
      "text"
    ]
  }
}

Get a list of application configurations

get
Responses
200

Success

get
/api/v1/servers/applications/GetConfigurations
GET /api/v1/servers/applications/GetConfigurations HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "name": "text",
      "description": "text",
      "gpuCount": 1,
      "gpuType": "text",
      "gpuBrand": "text",
      "gpuName": "text",
      "vcpusCount": 1,
      "memoryGb": 1,
      "directAttachedStorageGb": 1,
      "pricePerHour": 1,
      "clusters": [
        "text"
      ]
    }
  ]
}

Get detailed information on available configurations for applications

get
Query parameters
clusterstringRequiredExample: Msc1
resourcePoolstringRequiredExample: on-demand
Responses
200

Success

get
/api/v1/servers/applications/GetAvailability
GET /api/v1/servers/applications/GetAvailability?cluster=text&resourcePool=text HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "configuration": "text",
      "cluster": "text",
      "rpool": "text",
      "price": 1,
      "available": true,
      "count": 1,
      "maxCount": 1,
      "availableNodeNames": [
        "text"
      ]
    }
  ]
}

Get a list of application catalog items

get
Responses
200

Success

get
/api/v1/servers/applications/GetApplicationCatalogItems
GET /api/v1/servers/applications/GetApplicationCatalogItems HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "name": "text",
      "applicationSourceDetailsUrl": "text",
      "applicationSourceOwner": "text",
      "versions": [
        {
          "name": "text",
          "imageUrl": "text",
          "imageLastPushDate": "2025-12-05T14:34:30.782Z",
          "platform": "text",
          "launchType": "text",
          "releaseNotesUrl": "text",
          "accelerator": "text"
        }
      ]
    }
  ]
}

Create a new application using a pre-defined configuration and application catalog item

post

Example 1: Jupyter Notebook Application

{
  "name": "my-jupyter-notebook",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "applicationCatalogItemName": "jupyter-notebook",
  "applicationCatalogItemVersion": "python-3.11.9",
  "resourcePool": "on-demand",
  "sshKeys": ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..."],
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "jupyterToken": "your-jupyter-token"
}

Example 2: vLLM Server Application

Notes:

  • Model downloads and cache directories must use persistent storage (/mnt/direct-attached/, /mnt/personal-shared/, or /mnt/tenant-shared/). The root filesystem has limited capacity and is not suitable for these operations.

  • Set proxyPort to the port where vLLM is listening (e.g., 8000). When combined with proxyApiKeys, external access is automatically configured via port 443 (HTTPS) with TLS encryption and API key authentication.

{
  "name": "my-vllm-server",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "applicationCatalogItemName": "vllm-server",
  "applicationCatalogItemVersion": "v0.11.0",
  "resourcePool": "on-demand",
  "sshKeys": ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..."],
  "startupCommands": [
    "vllm serve MODEL_ID_OR_PATH --download-dir /mnt/direct-attached/vllm-cache --host 127.0.0.1 --port 8000"
  ],
  "environmentVariables": {
    "HF_TOKEN": "your-huggingface-token",
    "XDG_CACHE_HOME": "/mnt/direct-attached/.cache",
    "HF_HOME": "/mnt/direct-attached/.cache/huggingface",
    "HUGGINGFACE_HUB_CACHE": "/mnt/direct-attached/.cache/huggingface/hub",
    "CUDA_CACHE_PATH": "/mnt/direct-attached/.cache/nv/ComputeCache",
    "PIP_CACHE_DIR": "/mnt/direct-attached/.cache/pip",
    "VLLM_CACHE_ROOT": "/mnt/direct-attached/.cache/vllm",
    "VLLM_ASSETS_CACHE": "/mnt/direct-attached/.cache/vllm/assets"
  },
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "proxyPort": "8000",
  "proxyApiKeys": ["your-vllm-api-key"]
}
Body
namestring · min: 1Required

The application name

Example: my-jupyter-notebook
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
hardwarePackageNamestring · min: 1Required

The name or unique identifier of the application hardware configuration to use for the application.

Example: g-nvidia-1xa100-40gb-pcie-14vcpu-112gb
applicationCatalogItemNamestring · min: 1Required

The name of the application catalog item.

Example: jupyter-notebook
applicationCatalogItemVersionstring · min: 1Required

The version name of the application catalog item.

Example: python-3.11.9
resourcePoolstring | nullableOptional

The resource pool to use for the application

Example: on-demand
sshKeysstring[] | nullableOptional

The SSH keys for accessing the application

persistDirectAttachedStoragebooleanOptional

Indicates whether to persist direct attached storage (if resource pool is reserved)

Example: false
personalSharedStoragebooleanOptional

Enable personal shared storage for the application

Example: true
tenantSharedStoragebooleanOptional

Enable tenant shared storage for the application

Example: true
selectedNodestring | nullableOptional

Specific node name to target for application deployment. Used for non-on-demand resource pools to allow node-specific scheduling.

Example: yycdp-dev-k8sw03
jupyterTokenstring | nullableOptional

An authentication token for accessing Jupyter Notebook enabled applications

Example: abc123
startupCommandsstring[] | nullableOptional

List of startup commands to be executed during container initialization. Commands are executed in order and joined with semicolons. Used for custom initialization logic before the main application starts.

Example: ["pip install custom-package","python setup.py"]
proxyPortstring | nullableOptional

The port number for the application proxy service. Required to setup the proxy Used in conjunction with proxyApiKeys for authenticated access.

Example: 8000
proxyApiKeysstring[] | nullableOptional

Optional API keys for authenticating with the application proxy service. Multiple keys can be provided to support key rotation. Each key must contain only alphanumeric characters, hyphens, and underscores.

Example: ["api-key-abc123","api-key-def456"]
Responses
post
/api/v1/servers/applications/CreateCatalogApplication
POST /api/v1/servers/applications/CreateCatalogApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 628

{
  "name": "my-jupyter-notebook",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "applicationCatalogItemName": "jupyter-notebook",
  "applicationCatalogItemVersion": "python-3.11.9",
  "resourcePool": "on-demand",
  "sshKeys": [
    "text"
  ],
  "persistDirectAttachedStorage": false,
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "selectedNode": "yycdp-dev-k8sw03",
  "jupyterToken": "abc123",
  "startupCommands": [
    "pip install custom-package",
    "python setup.py"
  ],
  "environmentVariables": {
    "HF_TOKEN": "your-token-here",
    "CACHE_DIR": "/mnt/storage/.cache"
  },
  "proxyPort": "8000",
  "proxyApiKeys": [
    "api-key-abc123",
    "api-key-def456"
  ]
}
{
  "id": "text",
  "cluster": "text",
  "status": "text",
  "tenant": "text",
  "createdBy": "text",
  "privateIp": "text",
  "publicIp": "text",
  "resourcePool": "text",
  "dns": "text",
  "sshUsername": "text",
  "applicationCatalogItemName": "text",
  "applicationCatalogItemVersionName": "text",
  "hardwarePackageName": "text",
  "persistedDirectAttachedStorage": true,
  "personalSharedStorage": true,
  "tenantSharedStorage": true
}

Create a new custom application using a pre-defined configuration and user-defined container image.

post
Body
namestring · min: 1Required

The application name

Example: my-custom-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
hardwarePackageNamestring · min: 1Required

The name or unique identifier of the application hardware configuration to use for the application.

Example: g-nvidia-1xa100-40gb-pcie-14vcpu-112gb
imageUrlstring · min: 1Required

Image URL for the custom application.

Example: docker.io/{namespace}/{repository}:{tag}
imageCmdOverridestring[] | nullableOptional

Optional Image CMD override allows users to specify a custom command to run in the container. Must be a JSON array (e.g., ["python", "train.py"])

Example: ["python","train.py"]
resourcePoolstring | nullableOptional

The resource pool to use for the application

Example: on-demand
readinessWatcherPortinteger · int32 | nullableOptional

The port used for monitoring application readiness and status. Common examples:

  • 443 (JupyterLab)
  • 22 (SSH)
Example: 443
proxyPortinteger · int32 | nullableOptional

The port your application uses to receive HTTPS traffic. When set, a reverse proxy will be automatically configured in front of your application. Port 443 is reserved for the reverse proxy and cannot be used.

Example: 8888
proxyApiKeysstring[] | nullableOptional

API keys for authenticating with the reverse proxy service. Optional, but requires proxyPort to be set for the reverse proxy to be configured. Each key must:

  • Contain only alphanumeric characters, hyphens, and underscores
  • Not exceed 512 characters
  • Not be null or whitespace Maximum 10 keys allowed.
Example: ["key_user1","key_user2"]
persistDirectAttachedStoragebooleanOptional

Indicates whether to persist direct attached storage (if resource pool is reserved)

Example: false
personalSharedStoragebooleanOptional

Enable personal shared storage for the application

Example: true
tenantSharedStoragebooleanOptional

Enable tenant shared storage for the application

Example: true
selectedNodestring | nullableOptional

Specific node name to target for application deployment. Used for non-on-demand resource pools to allow node-specific scheduling.

Example: yycdp-dev-k8sw03
Responses
post
/api/v1/servers/applications/CreateCustomApplication
POST /api/v1/servers/applications/CreateCustomApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 768

{
  "name": "my-custom-application",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "imageUrl": "docker.io/{namespace}/{repository}:{tag}",
  "imageCmdOverride": [
    "python",
    "train.py"
  ],
  "environmentVariables": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "imageRepository": {
    "hostname": "https://index.docker.io/v1/",
    "username": "your-docker-username",
    "password": "dckr_pat__xxx1234567890abcdef"
  },
  "resourcePool": "on-demand",
  "readinessWatcherPort": 443,
  "proxyPort": 8888,
  "proxyApiKeys": [
    "key_user1",
    "key_user2"
  ],
  "persistDirectAttachedStorage": false,
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "selectedNode": "yycdp-dev-k8sw03",
  "userScripts": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "securityContext": {
    "runAsRoot": true,
    "containerUid": null,
    "containerGid": null
  }
}
{
  "id": "text",
  "cluster": "text",
  "status": "text",
  "tenant": "text",
  "createdBy": "text",
  "privateIp": "text",
  "publicIp": "text",
  "resourcePool": "text",
  "dns": "text",
  "sshUsername": "text",
  "applicationCatalogItemName": "text",
  "applicationCatalogItemVersionName": "text",
  "hardwarePackageName": "text",
  "persistedDirectAttachedStorage": true,
  "personalSharedStorage": true,
  "tenantSharedStorage": true
}

Start an application that has been previously set up and provisioned, but is currently OFFLINE

post
Body
idstring · min: 1Required

The application name

Example: my-jupyter-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
Responses
post
/api/v1/servers/applications/StartApplication
POST /api/v1/servers/applications/StartApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 48

{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}

Stop an application that has been previously set up and provisioned, but is currently ONLINE

post
Body
idstring · min: 1Required

The application name

Example: my-jupyter-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
Responses
post
/api/v1/servers/applications/StopApplication
POST /api/v1/servers/applications/StopApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 48

{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}

Permanently delete a specified application, effectively wiping all its data and freeing up resources for other uses

delete
Query parameters
IdstringRequired

The application name

Example: my-jupyter-application
ClusterstringRequired

The cluster you're operating on

Example: Msc1
Responses
delete
/api/v1/servers/applications/DestroyApplication
DELETE /api/v1/servers/applications/DestroyApplication?Id=my-jupyter-application&Cluster=Msc1 HTTP/1.1
Host: 
Accept: */*
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}

Get runtime logs for a specified application

get
Query parameters
IdstringRequired

The name of the application

Example: my-application
ClusterstringRequired

The cluster where the application is running

Example: Hou1
Limitinteger · int32 · min: 1 · max: 10000Required

The maximum number of log entries to return.

Example: 2000
Responses
200

Success

get
/api/v1/servers/applications/GetApplicationRuntimeLogs
GET /api/v1/servers/applications/GetApplicationRuntimeLogs?Id=my-application&Cluster=Hou1&Limit=2000 HTTP/1.1
Host: 
Accept: */*
{
  "id": "text",
  "cluster": "text",
  "logs": "text"
}

Last updated