# Applications

## GET /api/v1/servers/applications/GetApplications

> Get a list of applications

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetApplications":{"get":{"tags":["servers/applications"],"summary":"Get a list of applications","operationId":"ApiV1ServersApplicationsGetapplicationsGet","responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiOverview"}},"application/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiOverview"}},"text/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiOverview"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ListResultDtoOfApplicationsApiOverview":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiOverview"},"nullable":true}},"additionalProperties":false},"ApplicationsApiOverview":{"type":"object","properties":{"id":{"type":"string","nullable":true},"cluster":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"tenant":{"type":"string","nullable":true},"createdBy":{"type":"string","nullable":true},"privateIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"resourcePool":{"type":"string","nullable":true},"dns":{"type":"string","nullable":true},"sshUsername":{"type":"string","nullable":true},"applicationCatalogItemName":{"type":"string","nullable":true},"applicationCatalogItemVersionName":{"type":"string","nullable":true},"hardwarePackageName":{"type":"string","nullable":true},"persistedDirectAttachedStorage":{"type":"boolean"},"personalSharedStorage":{"type":"boolean"},"tenantSharedStorage":{"type":"boolean"}},"additionalProperties":false}}}}
```

## GET /api/v1/servers/applications/GetApplicationDetails

> Get detailed information about a specific application

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetApplicationDetails":{"get":{"tags":["servers/applications"],"summary":"Get detailed information about a specific application","operationId":"ApiV1ServersApplicationsGetapplicationdetailsGet","parameters":[{"name":"Id","in":"query","description":"The application name","required":true,"schema":{"type":"string"}},{"name":"Cluster","in":"query","description":"The cluster you're operating on","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiDetails"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiDetails"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiDetails"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiDetails":{"type":"object","properties":{"instanceDetails":{"$ref":"#/components/schemas/InstanceDetails"},"applicationCatalogItem":{"$ref":"#/components/schemas/ApplicationsApiCatalogItem"},"hardwarePackage":{"$ref":"#/components/schemas/ApplicationsApiApplicationConfig"},"servingDetails":{"$ref":"#/components/schemas/ApplicationsApiServingDetails"}},"additionalProperties":false},"InstanceDetails":{"type":"object","properties":{"id":{"type":"string","nullable":true},"cluster":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"statusReason":{"type":"string","nullable":true},"statusMessage":{"type":"string","nullable":true},"privateIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"imageCmdOverride":{"type":"string","nullable":true},"environmentVariables":{"type":"object","additionalProperties":{"type":"string","nullable":true},"nullable":true},"readinessWatcherPort":{"type":"integer","format":"int32","nullable":true},"proxyPort":{"type":"integer","format":"int32","nullable":true},"createdBy":{"type":"string","nullable":true},"tenant":{"type":"string","nullable":true},"resourcePool":{"type":"string","nullable":true},"nodeSelector":{"type":"string","nullable":true},"creationTime":{"type":"string","format":"date-time"},"lastUpdated":{"type":"string","format":"date-time","nullable":true},"dns":{"type":"string","nullable":true},"persistedDirectAttachedStorage":{"type":"boolean"},"personalSharedStorage":{"type":"boolean"},"tenantSharedStorage":{"type":"boolean"},"runAsRoot":{"type":"boolean","description":"Run container with root privileges. When disabled, requires UID and GID.","nullable":true},"containerUid":{"type":"integer","description":"User ID (UID) for running container when not using root privileges","format":"int32","nullable":true},"containerGid":{"type":"integer","description":"Group ID (GID) for running container when not using root privileges","format":"int32","nullable":true}},"additionalProperties":false},"ApplicationsApiCatalogItem":{"type":"object","properties":{"name":{"type":"string","nullable":true},"applicationSourceDetailsUrl":{"type":"string","nullable":true},"applicationSourceOwner":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"versions":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiCatalogItemVersion"},"nullable":true}},"additionalProperties":false},"ApplicationsApiCatalogItemVersion":{"type":"object","properties":{"name":{"type":"string","nullable":true},"imageUrl":{"type":"string","nullable":true},"imageLastPushDate":{"type":"string","format":"date-time","nullable":true},"platform":{"type":"string","nullable":true},"launchType":{"type":"string","nullable":true},"releaseNotesUrl":{"type":"string","nullable":true},"accelerator":{"type":"string","nullable":true},"minVramGb":{"type":"integer","format":"int32","nullable":true},"defaultProxyPort":{"type":"string","nullable":true}},"additionalProperties":false},"ApplicationsApiApplicationConfig":{"type":"object","properties":{"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"gpuCount":{"type":"integer","format":"int32","nullable":true},"gpuType":{"type":"string","nullable":true},"gpuBrand":{"type":"string","nullable":true},"gpuName":{"type":"string","nullable":true},"vcpusCount":{"type":"integer","format":"int32","nullable":true},"memoryGb":{"type":"integer","format":"int64","nullable":true},"directAttachedStorageGb":{"type":"integer","format":"int32","nullable":true},"pricePerHour":{"type":"number","format":"double","nullable":true},"vramGb":{"type":"integer","format":"int32","nullable":true},"clusters":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false},"ApplicationsApiServingDetails":{"type":"object","properties":{"platform":{"type":"string","nullable":true},"modelId":{"type":"string","nullable":true},"baseUrl":{"type":"string","nullable":true},"healthUrl":{"type":"string","nullable":true},"requiresAuthentication":{"type":"boolean"},"authScheme":{"type":"string","nullable":true}},"additionalProperties":false}}}}
```

## GET /api/v1/servers/applications/GetConfigurations

> Get a list of application configurations

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetConfigurations":{"get":{"tags":["servers/applications"],"summary":"Get a list of application configurations","operationId":"ApiV1ServersApplicationsGetconfigurationsGet","responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfig"}},"application/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfig"}},"text/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfig"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ListResultDtoOfApplicationsApiApplicationConfig":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiApplicationConfig"},"nullable":true}},"additionalProperties":false},"ApplicationsApiApplicationConfig":{"type":"object","properties":{"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"gpuCount":{"type":"integer","format":"int32","nullable":true},"gpuType":{"type":"string","nullable":true},"gpuBrand":{"type":"string","nullable":true},"gpuName":{"type":"string","nullable":true},"vcpusCount":{"type":"integer","format":"int32","nullable":true},"memoryGb":{"type":"integer","format":"int64","nullable":true},"directAttachedStorageGb":{"type":"integer","format":"int32","nullable":true},"pricePerHour":{"type":"number","format":"double","nullable":true},"vramGb":{"type":"integer","format":"int32","nullable":true},"clusters":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false}}}}
```

## GET /api/v1/servers/applications/GetAvailability

> Get detailed information on available configurations for applications

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetAvailability":{"get":{"tags":["servers/applications"],"summary":"Get detailed information on available configurations for applications","operationId":"ApiV1ServersApplicationsGetavailabilityGet","parameters":[{"name":"cluster","in":"query","description":"","required":true,"schema":{"type":"string"}},{"name":"resourcePool","in":"query","description":"","required":true,"schema":{"type":"string"}},{"name":"applicationCatalogItemName","in":"query","schema":{"type":"string"}},{"name":"applicationCatalogItemVersion","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfigAvailability"}},"application/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfigAvailability"}},"text/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiApplicationConfigAvailability"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ListResultDtoOfApplicationsApiApplicationConfigAvailability":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiApplicationConfigAvailability"},"nullable":true}},"additionalProperties":false},"ApplicationsApiApplicationConfigAvailability":{"type":"object","properties":{"configuration":{"type":"string","nullable":true},"cluster":{"type":"string","nullable":true},"rpool":{"type":"string","nullable":true},"price":{"type":"number","format":"double","nullable":true},"available":{"type":"boolean","nullable":true},"count":{"type":"integer","format":"int32","nullable":true},"maxCount":{"type":"integer","format":"int32","nullable":true},"availableNodeNames":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false}}}}
```

## GET /api/v1/servers/applications/GetApplicationCatalogItems

> Get a list of application catalog items

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetApplicationCatalogItems":{"get":{"tags":["servers/applications"],"summary":"Get a list of application catalog items","operationId":"ApiV1ServersApplicationsGetapplicationcatalogitemsGet","parameters":[{"name":"types","in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiCatalogItem"}},"application/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiCatalogItem"}},"text/json":{"schema":{"$ref":"#/components/schemas/ListResultDtoOfApplicationsApiCatalogItem"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ListResultDtoOfApplicationsApiCatalogItem":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiCatalogItem"},"nullable":true}},"additionalProperties":false},"ApplicationsApiCatalogItem":{"type":"object","properties":{"name":{"type":"string","nullable":true},"applicationSourceDetailsUrl":{"type":"string","nullable":true},"applicationSourceOwner":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"versions":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationsApiCatalogItemVersion"},"nullable":true}},"additionalProperties":false},"ApplicationsApiCatalogItemVersion":{"type":"object","properties":{"name":{"type":"string","nullable":true},"imageUrl":{"type":"string","nullable":true},"imageLastPushDate":{"type":"string","format":"date-time","nullable":true},"platform":{"type":"string","nullable":true},"launchType":{"type":"string","nullable":true},"releaseNotesUrl":{"type":"string","nullable":true},"accelerator":{"type":"string","nullable":true},"minVramGb":{"type":"integer","format":"int32","nullable":true},"defaultProxyPort":{"type":"string","nullable":true}},"additionalProperties":false}}}}
```

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

> \## Example 1: Jupyter Notebook Application> \
> \`\`\`json> \
> {> \
> &#x20; "name": "my-jupyter-notebook",> \
> &#x20; "cluster": "Msc1",> \
> &#x20; "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",> \
> &#x20; "applicationCatalogItemName": "jupyter-notebook",> \
> &#x20; "applicationCatalogItemVersion": "python-3.11.9",> \
> &#x20; "resourcePool": "on-demand",> \
> &#x20; "sshKeys": \["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..."],> \
> &#x20; "personalSharedStorage": true,> \
> &#x20; "tenantSharedStorage": true,> \
> &#x20; "jupyterToken": "your-jupyter-token"> \
> }> \
> \`\`\`> \\
>
> \
> \## Example 2: vLLM Server Application> \\
>
> \
> \*\*Notes:\*\*> \
> \- Model downloads and cache directories must use persistent storage (/mnt/direct-attached/,&#x20;> \
> &#x20; /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\*\*,&#x20;> \
> &#x20; external access is automatically configured via DNS with HTTPS and API key authentication.> \\
>
> \
> \`\`\`json> \
> {> \
> &#x20; "name": "my-vllm-server",> \
> &#x20; "cluster": "Msc1",> \
> &#x20; "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",> \
> &#x20; "applicationCatalogItemName": "vllm-server",> \
> &#x20; "applicationCatalogItemVersion": "v0.11.0",> \
> &#x20; "resourcePool": "on-demand",> \
> &#x20; "sshKeys": \["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..."],> \
> &#x20; "startupCommands": \[> \
> &#x20;   "vllm serve MODEL\_ID\_OR\_PATH --download-dir /mnt/direct-attached/vllm-cache --host 127.0.0.1 --port 8000"> \
> &#x20; ],> \
> &#x20; "environmentVariables": {> \
> &#x20;   "HF\_TOKEN": "your-huggingface-token",> \
> &#x20;   "XDG\_CACHE\_HOME": "/mnt/direct-attached/.cache",> \
> &#x20;   "HF\_HOME": "/mnt/direct-attached/.cache/huggingface",> \
> &#x20;   "HUGGINGFACE\_HUB\_CACHE": "/mnt/direct-attached/.cache/huggingface/hub",> \
> &#x20;   "CUDA\_CACHE\_PATH": "/mnt/direct-attached/.cache/nv/ComputeCache",> \
> &#x20;   "PIP\_CACHE\_DIR": "/mnt/direct-attached/.cache/pip",> \
> &#x20;   "VLLM\_CACHE\_ROOT": "/mnt/direct-attached/.cache/vllm",> \
> &#x20;   "VLLM\_ASSETS\_CACHE": "/mnt/direct-attached/.cache/vllm/assets"> \
> &#x20; },> \
> &#x20; "personalSharedStorage": true,> \
> &#x20; "tenantSharedStorage": true,> \
> &#x20; "proxyPort": "8000",> \
> &#x20; "proxyApiKeys": \["your-vllm-api-key"]> \
> }> \
> \`\`\`> \\
>
> \
> \## Example 3: Model Application> \
> \`\`\`json> \
> {> \
> &#x20; "name": "my-gpt-oss-app",> \
> &#x20; "cluster": "Msc1",> \
> &#x20; "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",> \
> &#x20; "applicationCatalogItemName": "openai-gpt-oss",> \
> &#x20; "applicationCatalogItemVersion": "openai/gpt-oss-20b",> \
> &#x20; "resourcePool": "on-demand",> \
> &#x20; "proxyApiKeys": \["your-api-key"]> \
> }> \
> \`\`\`

````json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/CreateCatalogApplication":{"post":{"tags":["servers/applications"],"summary":"Create a new application using a pre-defined configuration and application catalog item","description":"## Example 1: Jupyter Notebook Application\r\n```json\r\n{\r\n  \"name\": \"my-jupyter-notebook\",\r\n  \"cluster\": \"Msc1\",\r\n  \"hardwarePackageName\": \"g-nvidia-1xa100-40gb-pcie-14vcpu-112gb\",\r\n  \"applicationCatalogItemName\": \"jupyter-notebook\",\r\n  \"applicationCatalogItemVersion\": \"python-3.11.9\",\r\n  \"resourcePool\": \"on-demand\",\r\n  \"sshKeys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...\"],\r\n  \"personalSharedStorage\": true,\r\n  \"tenantSharedStorage\": true,\r\n  \"jupyterToken\": \"your-jupyter-token\"\r\n}\r\n```\r\n\r\n## Example 2: vLLM Server Application\r\n\r\n**Notes:**\r\n- Model downloads and cache directories must use persistent storage (/mnt/direct-attached/, \r\n  /mnt/personal-shared/, or /mnt/tenant-shared/). The root filesystem has limited capacity and is not suitable for these operations.\r\n- Set **proxyPort** to the port where vLLM is listening (e.g., 8000). When combined with **proxyApiKeys**, \r\n  external access is automatically configured via DNS with HTTPS and API key authentication.\r\n\r\n```json\r\n{\r\n  \"name\": \"my-vllm-server\",\r\n  \"cluster\": \"Msc1\",\r\n  \"hardwarePackageName\": \"g-nvidia-1xa100-40gb-pcie-14vcpu-112gb\",\r\n  \"applicationCatalogItemName\": \"vllm-server\",\r\n  \"applicationCatalogItemVersion\": \"v0.11.0\",\r\n  \"resourcePool\": \"on-demand\",\r\n  \"sshKeys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...\"],\r\n  \"startupCommands\": [\r\n    \"vllm serve MODEL_ID_OR_PATH --download-dir /mnt/direct-attached/vllm-cache --host 127.0.0.1 --port 8000\"\r\n  ],\r\n  \"environmentVariables\": {\r\n    \"HF_TOKEN\": \"your-huggingface-token\",\r\n    \"XDG_CACHE_HOME\": \"/mnt/direct-attached/.cache\",\r\n    \"HF_HOME\": \"/mnt/direct-attached/.cache/huggingface\",\r\n    \"HUGGINGFACE_HUB_CACHE\": \"/mnt/direct-attached/.cache/huggingface/hub\",\r\n    \"CUDA_CACHE_PATH\": \"/mnt/direct-attached/.cache/nv/ComputeCache\",\r\n    \"PIP_CACHE_DIR\": \"/mnt/direct-attached/.cache/pip\",\r\n    \"VLLM_CACHE_ROOT\": \"/mnt/direct-attached/.cache/vllm\",\r\n    \"VLLM_ASSETS_CACHE\": \"/mnt/direct-attached/.cache/vllm/assets\"\r\n  },\r\n  \"personalSharedStorage\": true,\r\n  \"tenantSharedStorage\": true,\r\n  \"proxyPort\": \"8000\",\r\n  \"proxyApiKeys\": [\"your-vllm-api-key\"]\r\n}\r\n```\r\n\r\n## Example 3: Model Application\r\n```json\r\n{\r\n  \"name\": \"my-gpt-oss-app\",\r\n  \"cluster\": \"Msc1\",\r\n  \"hardwarePackageName\": \"g-nvidia-1xa100-40gb-pcie-14vcpu-112gb\",\r\n  \"applicationCatalogItemName\": \"openai-gpt-oss\",\r\n  \"applicationCatalogItemVersion\": \"openai/gpt-oss-20b\",\r\n  \"resourcePool\": \"on-demand\",\r\n  \"proxyApiKeys\": [\"your-api-key\"]\r\n}\r\n```","operationId":"ApiV1ServersApplicationsCreatecatalogapplicationPost","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCreateRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCreateRequest"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCreateRequest"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCreateRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"402":{"description":"Client Error"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"422":{"description":"Client Error"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiCreateRequest":{"required":["applicationCatalogItemName","applicationCatalogItemVersion","cluster","hardwarePackageName","name"],"type":"object","properties":{"name":{"maxLength":52,"minLength":0,"type":"string","description":"The application name.\r\nMust be 52 characters or less."},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"},"hardwarePackageName":{"minLength":1,"type":"string","description":"The name or unique identifier of the application hardware configuration to use for the application."},"applicationCatalogItemName":{"minLength":1,"type":"string","description":"The name of the application catalog item."},"applicationCatalogItemVersion":{"minLength":1,"type":"string","description":"The version name of the application catalog item."},"resourcePool":{"type":"string","description":"The resource pool to use for the application","nullable":true},"sshKeys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for accessing the application","nullable":true},"persistDirectAttachedStorage":{"type":"boolean","description":"Indicates whether to persist direct attached storage (if resource pool is reserved)"},"personalSharedStorage":{"type":"boolean","description":"Enable personal shared storage for the application"},"tenantSharedStorage":{"type":"boolean","description":"Enable tenant shared storage for the application"},"selectedNode":{"type":"string","description":"Specific node name to target for application deployment.\r\nUsed for non-on-demand resource pools to allow node-specific scheduling.","nullable":true},"jupyterToken":{"type":"string","description":"An authentication token for accessing Jupyter Notebook enabled applications","nullable":true},"startupCommands":{"type":"array","items":{"type":"string"},"description":"List of startup commands to be executed during container initialization.\r\nCommands are executed in order and joined with semicolons.\r\nUsed for custom initialization logic before the main application starts.","nullable":true},"environmentVariables":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"Custom environment variables for the application.\r\nKey-value pairs that will be set in the container environment.\r\nUseful for authentication tokens, cache paths, and runtime configuration.","nullable":true},"proxyPort":{"type":"string","description":"The port number for the application proxy service. Required to setup the proxy\r\nUsed in conjunction with proxyApiKeys for authenticated access.","nullable":true},"proxyApiKeys":{"type":"array","items":{"type":"string"},"description":"Optional API keys for authenticating with the application proxy service.\r\nMultiple keys can be provided to support key rotation.\r\nEach key must contain only alphanumeric characters, hyphens, and underscores.","nullable":true}},"additionalProperties":false},"ApplicationsApiOverview":{"type":"object","properties":{"id":{"type":"string","nullable":true},"cluster":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"tenant":{"type":"string","nullable":true},"createdBy":{"type":"string","nullable":true},"privateIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"resourcePool":{"type":"string","nullable":true},"dns":{"type":"string","nullable":true},"sshUsername":{"type":"string","nullable":true},"applicationCatalogItemName":{"type":"string","nullable":true},"applicationCatalogItemVersionName":{"type":"string","nullable":true},"hardwarePackageName":{"type":"string","nullable":true},"persistedDirectAttachedStorage":{"type":"boolean"},"personalSharedStorage":{"type":"boolean"},"tenantSharedStorage":{"type":"boolean"}},"additionalProperties":false}}}}
````

## POST /api/v1/servers/applications/CreateCustomApplication

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

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/CreateCustomApplication":{"post":{"tags":["servers/applications"],"summary":"Create a new custom application using a pre-defined configuration and user-defined container image.","operationId":"ApiV1ServersApplicationsCreatecustomapplicationPost","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCustomApiCreateRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCustomApiCreateRequest"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCustomApiCreateRequest"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCustomApiCreateRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiOverview"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"402":{"description":"Client Error"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"422":{"description":"Client Error"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiCustomApiCreateRequest":{"required":["cluster","hardwarePackageName","imageUrl","name"],"type":"object","properties":{"name":{"maxLength":52,"minLength":0,"type":"string","description":"The application name.\r\nMust be 52 characters or less."},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"},"hardwarePackageName":{"minLength":1,"type":"string","description":"The name or unique identifier of the application hardware configuration to use for the application."},"imageUrl":{"minLength":1,"type":"string","description":"Image URL for the custom application."},"imageCmdOverride":{"type":"array","items":{"type":"string"},"description":"Optional Image CMD override allows users to specify a custom command to run in the container.\r\nMust be a JSON array (e.g., [\"python\", \"train.py\"])","nullable":true},"environmentVariables":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"Environment variables for the application.\r\nNames must start with a letter or underscore and contain only alphanumeric characters and underscores.\r\nValues must not contain null characters, carriage returns, or newlines.","nullable":true},"imageRepository":{"$ref":"#/components/schemas/ImageRepositoryDto"},"resourcePool":{"type":"string","description":"The resource pool to use for the application","nullable":true},"readinessWatcherPort":{"type":"integer","description":"The port used for monitoring application readiness and status.\r\nCommon examples: \r\n- 443 (JupyterLab) \r\n- 22 (SSH)","format":"int32","nullable":true},"proxyPort":{"type":"integer","description":"The port your application uses to receive HTTPS traffic.\r\nWhen set, a reverse proxy will be automatically configured in front of your application.\r\nPort 443 is reserved for the reverse proxy and cannot be used.","format":"int32","nullable":true},"proxyApiKeys":{"type":"array","items":{"type":"string"},"description":"API keys for authenticating with the reverse proxy service.\r\nOptional, but requires proxyPort to be set for the reverse proxy to be configured.\r\nEach key must:\r\n- Contain only alphanumeric characters, hyphens, and underscores\r\n- Not exceed 512 characters\r\n- Not be null or whitespace\r\nMaximum 10 keys allowed.","nullable":true},"persistDirectAttachedStorage":{"type":"boolean","description":"Indicates whether to persist direct attached storage (if resource pool is reserved)"},"personalSharedStorage":{"type":"boolean","description":"Enable personal shared storage for the application"},"tenantSharedStorage":{"type":"boolean","description":"Enable tenant shared storage for the application"},"selectedNode":{"type":"string","description":"Specific node name to target for application deployment.\r\nUsed for non-on-demand resource pools to allow node-specific scheduling.","nullable":true},"userScripts":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"Dictionary of script filenames to script content. Each scripts to be mounted at /etc/script/user-scripts for use in CMD or ENTRYPOINT.\r\nScript names must:\r\n- Contain only alphanumeric characters, dots, spaces and parentheses\r\n- Not exceed 255 characters\r\nScript content must:\r\n- Not be null or empty\r\n- Not exceed 16384 characters\r\n- Not contain invalid characters","nullable":true},"securityContext":{"$ref":"#/components/schemas/SecurityContextDto"}},"additionalProperties":false},"ImageRepositoryDto":{"type":"object","properties":{"hostname":{"type":"string","description":"The registry hostname for the container repository.\r\nIf not provided in the ImageRepository object, will be inferred from the imageUrl.\r\nExamples:\r\n- Docker Hub: \"https://index.docker.io/v1/\"\r\n- GitHub Container Registry: \"https://ghcr.io/\"","nullable":true},"username":{"type":"string","description":"The username for authentication with private repositories.\r\nThis is only required if the repository is private.","nullable":true},"password":{"type":"string","description":"The password or access token for authentication with private repositories.\r\nThis is only required if the repository is private.","nullable":true}},"additionalProperties":false},"SecurityContextDto":{"type":"object","properties":{"runAsRoot":{"type":"boolean","description":"Run container with root privileges. When disabled, requires UID and GID."},"containerUid":{"maximum":2147483647,"minimum":0,"type":"integer","description":"User ID (UID) for running container when not using root privileges","format":"int32","nullable":true},"containerGid":{"maximum":2147483647,"minimum":0,"type":"integer","description":"Group ID (GID) for running container when not using root privileges","format":"int32","nullable":true}},"additionalProperties":false},"ApplicationsApiOverview":{"type":"object","properties":{"id":{"type":"string","nullable":true},"cluster":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"tenant":{"type":"string","nullable":true},"createdBy":{"type":"string","nullable":true},"privateIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"resourcePool":{"type":"string","nullable":true},"dns":{"type":"string","nullable":true},"sshUsername":{"type":"string","nullable":true},"applicationCatalogItemName":{"type":"string","nullable":true},"applicationCatalogItemVersionName":{"type":"string","nullable":true},"hardwarePackageName":{"type":"string","nullable":true},"persistedDirectAttachedStorage":{"type":"boolean"},"personalSharedStorage":{"type":"boolean"},"tenantSharedStorage":{"type":"boolean"}},"additionalProperties":false}}}}
```

## POST /api/v1/servers/applications/StartApplication

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

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/StartApplication":{"post":{"tags":["servers/applications"],"summary":"Start an application that has been previously set up and provisioned, but is currently OFFLINE","operationId":"ApiV1ServersApplicationsStartapplicationPost","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"402":{"description":"Client Error"},"403":{"description":"Forbidden"},"409":{"description":"Conflict"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiCommandRequest":{"required":["cluster","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"The application name"},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"}},"additionalProperties":false},"ApplicationsApiCommandResponse":{"required":["cluster","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"The application name"},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"}},"additionalProperties":false}}}}
```

## POST /api/v1/servers/applications/StopApplication

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

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/StopApplication":{"post":{"tags":["servers/applications"],"summary":"Stop an application that has been previously set up and provisioned, but is currently ONLINE","operationId":"ApiV1ServersApplicationsStopapplicationPost","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiCommandRequest":{"required":["cluster","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"The application name"},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"}},"additionalProperties":false},"ApplicationsApiCommandResponse":{"required":["cluster","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"The application name"},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"}},"additionalProperties":false}}}}
```

## DELETE /api/v1/servers/applications/DestroyApplication

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

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/DestroyApplication":{"delete":{"tags":["servers/applications"],"summary":"Permanently delete a specified application, effectively wiping all its data and freeing up resources for other uses","operationId":"ApiV1ServersApplicationsDestroyapplicationDelete","parameters":[{"name":"Id","in":"query","description":"The application name","required":true,"schema":{"type":"string"}},{"name":"Cluster","in":"query","description":"The cluster you're operating on","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Accepted","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiCommandResponse"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiCommandResponse":{"required":["cluster","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"The application name"},"cluster":{"minLength":1,"type":"string","description":"The cluster you're operating on"}},"additionalProperties":false}}}}
```

## GET /api/v1/servers/applications/GetApplicationRuntimeLogs

> Get runtime logs for a specified application

```json
{"openapi":"3.0.1","info":{"title":"DenvrCloud API","version":"v1"},"paths":{"/api/v1/servers/applications/GetApplicationRuntimeLogs":{"get":{"tags":["servers/applications"],"summary":"Get runtime logs for a specified application","operationId":"ApiV1ServersApplicationsGetapplicationruntimelogsGet","parameters":[{"name":"Id","in":"query","description":"The name of the application","required":true,"schema":{"type":"string"}},{"name":"Cluster","in":"query","description":"The cluster where the application is running","required":true,"schema":{"type":"string"}},{"name":"Limit","in":"query","description":"The maximum number of log entries to return.","required":true,"schema":{"maximum":10000,"minimum":1,"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ApplicationsApiRuntimeLogsResponse"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiRuntimeLogsResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/ApplicationsApiRuntimeLogsResponse"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"500":{"description":"Server Error"}}}}},"components":{"schemas":{"ApplicationsApiRuntimeLogsResponse":{"type":"object","properties":{"id":{"type":"string","description":"The name of the application","nullable":true},"cluster":{"type":"string","description":"The cluster where the application is running","nullable":true},"logs":{"type":"string","description":"The runtime logs content","nullable":true}},"additionalProperties":false}}}}
```
