curl --request POST \
--url https://mycluster.domino.tech/api/apps/v1/apps/drafts \
--header 'Content-Type: application/json' \
--header 'X-Domino-Api-Key: <api-key>' \
--data '
{
"workspaceId": "<string>",
"app": {
"accessStatuses": [
{
"userId": "<string>"
}
],
"configurationType": "STANDARD",
"description": "<string>",
"discoverable": true,
"mountDatasets": true,
"name": "<string>",
"renderIFrame": true
},
"initialVersion": {
"bundleId": "<string>",
"content": {
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"importedGitRepoRefPatches": [
{
"repoId": "<string>",
"gitRef": {
"value": "<string>"
}
}
],
"mountDatasets": true,
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"repoId": "<string>",
"ref": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": true,
"vanityUrl": "<string>"
},
"description": "<string>",
"startOverrides": {
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": true,
"vanityUrl": "<string>"
}
},
"tags": [
{
"key": "<string>",
"value": "<string>"
}
]
},
"targetAppId": "<string>"
}
'import requests
url = "https://mycluster.domino.tech/api/apps/v1/apps/drafts"
payload = {
"workspaceId": "<string>",
"app": {
"accessStatuses": [{ "userId": "<string>" }],
"configurationType": "STANDARD",
"description": "<string>",
"discoverable": True,
"mountDatasets": True,
"name": "<string>",
"renderIFrame": True
},
"initialVersion": {
"bundleId": "<string>",
"content": {
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": True,
"externalVolumeMountIds": ["<string>"],
"importedGitRepoRefPatches": [
{
"repoId": "<string>",
"gitRef": { "value": "<string>" }
}
],
"mountDatasets": True,
"netAppVolumeIds": ["<string>"],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"repoId": "<string>",
"ref": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": True,
"vanityUrl": "<string>"
},
"description": "<string>",
"startOverrides": { "deployment": {
"hardwareTierId": "<string>",
"renderIFrame": True,
"vanityUrl": "<string>"
} },
"tags": [
{
"key": "<string>",
"value": "<string>"
}
]
},
"targetAppId": "<string>"
}
headers = {
"X-Domino-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Domino-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
workspaceId: '<string>',
app: {
accessStatuses: [{userId: '<string>'}],
configurationType: 'STANDARD',
description: '<string>',
discoverable: true,
mountDatasets: true,
name: '<string>',
renderIFrame: true
},
initialVersion: {
bundleId: '<string>',
content: {
dataPlaneId: '<string>',
dfsCommitId: '<string>',
entryScript: '<string>',
environmentId: '<string>',
environmentRevisionId: '<string>',
extendedIdentityPropagationToAppsEnabled: true,
externalVolumeMountIds: ['<string>'],
importedGitRepoRefPatches: [{repoId: '<string>', gitRef: {value: '<string>'}}],
mountDatasets: true,
netAppVolumeIds: ['<string>'],
resolvedCommits: {
dfsCommitId: '<string>',
gitCommitId: '<string>',
importedGitRepos: [{repoId: '<string>', ref: '<string>', repoName: '<string>'}],
importedProjects: [
{
commitId: '<string>',
directoryName: '<string>',
ownerId: '<string>',
projectId: '<string>',
projectName: '<string>',
release: '<string>'
}
]
}
},
deployment: {hardwareTierId: '<string>', renderIFrame: true, vanityUrl: '<string>'},
description: '<string>',
startOverrides: {
deployment: {hardwareTierId: '<string>', renderIFrame: true, vanityUrl: '<string>'}
},
tags: [{key: '<string>', value: '<string>'}]
},
targetAppId: '<string>'
})
};
fetch('https://mycluster.domino.tech/api/apps/v1/apps/drafts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/apps/v1/apps/drafts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'workspaceId' => '<string>',
'app' => [
'accessStatuses' => [
[
'userId' => '<string>'
]
],
'configurationType' => 'STANDARD',
'description' => '<string>',
'discoverable' => true,
'mountDatasets' => true,
'name' => '<string>',
'renderIFrame' => true
],
'initialVersion' => [
'bundleId' => '<string>',
'content' => [
'dataPlaneId' => '<string>',
'dfsCommitId' => '<string>',
'entryScript' => '<string>',
'environmentId' => '<string>',
'environmentRevisionId' => '<string>',
'extendedIdentityPropagationToAppsEnabled' => true,
'externalVolumeMountIds' => [
'<string>'
],
'importedGitRepoRefPatches' => [
[
'repoId' => '<string>',
'gitRef' => [
'value' => '<string>'
]
]
],
'mountDatasets' => true,
'netAppVolumeIds' => [
'<string>'
],
'resolvedCommits' => [
'dfsCommitId' => '<string>',
'gitCommitId' => '<string>',
'importedGitRepos' => [
[
'repoId' => '<string>',
'ref' => '<string>',
'repoName' => '<string>'
]
],
'importedProjects' => [
[
'commitId' => '<string>',
'directoryName' => '<string>',
'ownerId' => '<string>',
'projectId' => '<string>',
'projectName' => '<string>',
'release' => '<string>'
]
]
]
],
'deployment' => [
'hardwareTierId' => '<string>',
'renderIFrame' => true,
'vanityUrl' => '<string>'
],
'description' => '<string>',
'startOverrides' => [
'deployment' => [
'hardwareTierId' => '<string>',
'renderIFrame' => true,
'vanityUrl' => '<string>'
]
],
'tags' => [
[
'key' => '<string>',
'value' => '<string>'
]
]
],
'targetAppId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/apps/v1/apps/drafts"
payload := strings.NewReader("{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mycluster.domino.tech/api/apps/v1/apps/drafts")
.header("X-Domino-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/apps/v1/apps/drafts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"app": {
"accessControl": {
"accessStatuses": [
{
"userId": "<string>"
}
],
"discoverable": true
},
"authorship": {
"isDraft": true,
"author": {
"id": "<string>",
"name": "<string>"
}
},
"configurationType": "STANDARD",
"entryPoint": "<string>",
"id": "<string>",
"mountDatasets": true,
"name": "<string>",
"project": {
"id": "<string>",
"name": "<string>",
"ownerId": "<string>",
"ownerUsername": "<string>"
},
"renderIFrame": true,
"url": "<string>",
"views": 123,
"currentVersion": {
"createdAt": 123,
"id": "<string>",
"tags": [
{
"key": "<string>",
"value": "<string>"
}
],
"updatedAt": 123,
"bundle": {
"id": "<string>",
"name": "<string>"
},
"content": {
"mountDatasets": true,
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"gitRef": {
"value": "<string>"
},
"importedGitRepoRefs": [
{
"gitRef": {
"value": "<string>"
},
"repoId": "<string>",
"repoName": "<string>"
}
],
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"ref": "<string>",
"repoId": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"currentInstance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"deployment": {
"autoscalingSpecification": {
"enabled": true,
"maxReplicas": 15,
"minReplicas": 15,
"scaleDownStabilizationWindowSeconds": 1800,
"scaleUpStabilizationWindowSeconds": 1800,
"targetCpuAvgUtilizationPct": 50,
"targetMemoryAvgUtilizationPct": 50,
"useSessionAffinity": true
},
"hardwareTierId": "<string>",
"vanityUrl": "<string>"
},
"description": "<string>",
"versionNumber": 123
},
"description": "<string>",
"properties": [
{
"fields": [
{
"propertyId": "<string>",
"propertyLabel": "<string>",
"updatedAt": 123,
"updatedBy": {
"userId": "<string>",
"username": "<string>"
},
"value": "<string>"
}
],
"groupName": "<string>"
}
],
"taxonomyTags": [
{
"id": "<string>",
"label": "<string>",
"namespaceId": "<string>",
"description": "<string>",
"fullPath": [
"<string>"
],
"namespaceLabel": "<string>"
}
],
"thumbnailEtag": "<string>",
"updatedAt": 123,
"vanityUrl": "<string>"
},
"instance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"version": {
"createdAt": 123,
"id": "<string>",
"tags": [
{
"key": "<string>",
"value": "<string>"
}
],
"updatedAt": 123,
"bundle": {
"id": "<string>",
"name": "<string>"
},
"content": {
"mountDatasets": true,
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"gitRef": {
"value": "<string>"
},
"importedGitRepoRefs": [
{
"gitRef": {
"value": "<string>"
},
"repoId": "<string>",
"repoName": "<string>"
}
],
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"ref": "<string>",
"repoId": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"currentInstance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"deployment": {
"autoscalingSpecification": {
"enabled": true,
"maxReplicas": 15,
"minReplicas": 15,
"scaleDownStabilizationWindowSeconds": 1800,
"scaleUpStabilizationWindowSeconds": 1800,
"targetCpuAvgUtilizationPct": 50,
"targetMemoryAvgUtilizationPct": 50,
"useSessionAffinity": true
},
"hardwareTierId": "<string>",
"vanityUrl": "<string>"
},
"description": "<string>",
"versionNumber": 123
},
"warnings": [
"<string>"
]
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"errors": [
"<string>"
],
"requestId": "bbd78579-93c4-45ee-a983-0d5c8da6d5b1"
}{
"error": "<string>"
}Create or ensure a draft App for a workspace (v1)
Idempotent per workspace. Ensures a draft App exists for the caller’s workspace: creates a new draft on first call (returns the new draft) or returns the existing draft on re-entry (with any supplied app-field overrides applied as a PATCH). Always returns 200 with the resulting draft App. Status code is the same on first call and subsequent calls — clients distinguish create-vs-existing by tracking whether they previously held this draft’s id, not by the response status.
curl --request POST \
--url https://mycluster.domino.tech/api/apps/v1/apps/drafts \
--header 'Content-Type: application/json' \
--header 'X-Domino-Api-Key: <api-key>' \
--data '
{
"workspaceId": "<string>",
"app": {
"accessStatuses": [
{
"userId": "<string>"
}
],
"configurationType": "STANDARD",
"description": "<string>",
"discoverable": true,
"mountDatasets": true,
"name": "<string>",
"renderIFrame": true
},
"initialVersion": {
"bundleId": "<string>",
"content": {
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"importedGitRepoRefPatches": [
{
"repoId": "<string>",
"gitRef": {
"value": "<string>"
}
}
],
"mountDatasets": true,
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"repoId": "<string>",
"ref": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": true,
"vanityUrl": "<string>"
},
"description": "<string>",
"startOverrides": {
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": true,
"vanityUrl": "<string>"
}
},
"tags": [
{
"key": "<string>",
"value": "<string>"
}
]
},
"targetAppId": "<string>"
}
'import requests
url = "https://mycluster.domino.tech/api/apps/v1/apps/drafts"
payload = {
"workspaceId": "<string>",
"app": {
"accessStatuses": [{ "userId": "<string>" }],
"configurationType": "STANDARD",
"description": "<string>",
"discoverable": True,
"mountDatasets": True,
"name": "<string>",
"renderIFrame": True
},
"initialVersion": {
"bundleId": "<string>",
"content": {
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": True,
"externalVolumeMountIds": ["<string>"],
"importedGitRepoRefPatches": [
{
"repoId": "<string>",
"gitRef": { "value": "<string>" }
}
],
"mountDatasets": True,
"netAppVolumeIds": ["<string>"],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"repoId": "<string>",
"ref": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"deployment": {
"hardwareTierId": "<string>",
"renderIFrame": True,
"vanityUrl": "<string>"
},
"description": "<string>",
"startOverrides": { "deployment": {
"hardwareTierId": "<string>",
"renderIFrame": True,
"vanityUrl": "<string>"
} },
"tags": [
{
"key": "<string>",
"value": "<string>"
}
]
},
"targetAppId": "<string>"
}
headers = {
"X-Domino-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Domino-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
workspaceId: '<string>',
app: {
accessStatuses: [{userId: '<string>'}],
configurationType: 'STANDARD',
description: '<string>',
discoverable: true,
mountDatasets: true,
name: '<string>',
renderIFrame: true
},
initialVersion: {
bundleId: '<string>',
content: {
dataPlaneId: '<string>',
dfsCommitId: '<string>',
entryScript: '<string>',
environmentId: '<string>',
environmentRevisionId: '<string>',
extendedIdentityPropagationToAppsEnabled: true,
externalVolumeMountIds: ['<string>'],
importedGitRepoRefPatches: [{repoId: '<string>', gitRef: {value: '<string>'}}],
mountDatasets: true,
netAppVolumeIds: ['<string>'],
resolvedCommits: {
dfsCommitId: '<string>',
gitCommitId: '<string>',
importedGitRepos: [{repoId: '<string>', ref: '<string>', repoName: '<string>'}],
importedProjects: [
{
commitId: '<string>',
directoryName: '<string>',
ownerId: '<string>',
projectId: '<string>',
projectName: '<string>',
release: '<string>'
}
]
}
},
deployment: {hardwareTierId: '<string>', renderIFrame: true, vanityUrl: '<string>'},
description: '<string>',
startOverrides: {
deployment: {hardwareTierId: '<string>', renderIFrame: true, vanityUrl: '<string>'}
},
tags: [{key: '<string>', value: '<string>'}]
},
targetAppId: '<string>'
})
};
fetch('https://mycluster.domino.tech/api/apps/v1/apps/drafts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/apps/v1/apps/drafts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'workspaceId' => '<string>',
'app' => [
'accessStatuses' => [
[
'userId' => '<string>'
]
],
'configurationType' => 'STANDARD',
'description' => '<string>',
'discoverable' => true,
'mountDatasets' => true,
'name' => '<string>',
'renderIFrame' => true
],
'initialVersion' => [
'bundleId' => '<string>',
'content' => [
'dataPlaneId' => '<string>',
'dfsCommitId' => '<string>',
'entryScript' => '<string>',
'environmentId' => '<string>',
'environmentRevisionId' => '<string>',
'extendedIdentityPropagationToAppsEnabled' => true,
'externalVolumeMountIds' => [
'<string>'
],
'importedGitRepoRefPatches' => [
[
'repoId' => '<string>',
'gitRef' => [
'value' => '<string>'
]
]
],
'mountDatasets' => true,
'netAppVolumeIds' => [
'<string>'
],
'resolvedCommits' => [
'dfsCommitId' => '<string>',
'gitCommitId' => '<string>',
'importedGitRepos' => [
[
'repoId' => '<string>',
'ref' => '<string>',
'repoName' => '<string>'
]
],
'importedProjects' => [
[
'commitId' => '<string>',
'directoryName' => '<string>',
'ownerId' => '<string>',
'projectId' => '<string>',
'projectName' => '<string>',
'release' => '<string>'
]
]
]
],
'deployment' => [
'hardwareTierId' => '<string>',
'renderIFrame' => true,
'vanityUrl' => '<string>'
],
'description' => '<string>',
'startOverrides' => [
'deployment' => [
'hardwareTierId' => '<string>',
'renderIFrame' => true,
'vanityUrl' => '<string>'
]
],
'tags' => [
[
'key' => '<string>',
'value' => '<string>'
]
]
],
'targetAppId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/apps/v1/apps/drafts"
payload := strings.NewReader("{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mycluster.domino.tech/api/apps/v1/apps/drafts")
.header("X-Domino-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/apps/v1/apps/drafts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"workspaceId\": \"<string>\",\n \"app\": {\n \"accessStatuses\": [\n {\n \"userId\": \"<string>\"\n }\n ],\n \"configurationType\": \"STANDARD\",\n \"description\": \"<string>\",\n \"discoverable\": true,\n \"mountDatasets\": true,\n \"name\": \"<string>\",\n \"renderIFrame\": true\n },\n \"initialVersion\": {\n \"bundleId\": \"<string>\",\n \"content\": {\n \"dataPlaneId\": \"<string>\",\n \"dfsCommitId\": \"<string>\",\n \"entryScript\": \"<string>\",\n \"environmentId\": \"<string>\",\n \"environmentRevisionId\": \"<string>\",\n \"extendedIdentityPropagationToAppsEnabled\": true,\n \"externalVolumeMountIds\": [\n \"<string>\"\n ],\n \"importedGitRepoRefPatches\": [\n {\n \"repoId\": \"<string>\",\n \"gitRef\": {\n \"value\": \"<string>\"\n }\n }\n ],\n \"mountDatasets\": true,\n \"netAppVolumeIds\": [\n \"<string>\"\n ],\n \"resolvedCommits\": {\n \"dfsCommitId\": \"<string>\",\n \"gitCommitId\": \"<string>\",\n \"importedGitRepos\": [\n {\n \"repoId\": \"<string>\",\n \"ref\": \"<string>\",\n \"repoName\": \"<string>\"\n }\n ],\n \"importedProjects\": [\n {\n \"commitId\": \"<string>\",\n \"directoryName\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"projectId\": \"<string>\",\n \"projectName\": \"<string>\",\n \"release\": \"<string>\"\n }\n ]\n }\n },\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"startOverrides\": {\n \"deployment\": {\n \"hardwareTierId\": \"<string>\",\n \"renderIFrame\": true,\n \"vanityUrl\": \"<string>\"\n }\n },\n \"tags\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"targetAppId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"app": {
"accessControl": {
"accessStatuses": [
{
"userId": "<string>"
}
],
"discoverable": true
},
"authorship": {
"isDraft": true,
"author": {
"id": "<string>",
"name": "<string>"
}
},
"configurationType": "STANDARD",
"entryPoint": "<string>",
"id": "<string>",
"mountDatasets": true,
"name": "<string>",
"project": {
"id": "<string>",
"name": "<string>",
"ownerId": "<string>",
"ownerUsername": "<string>"
},
"renderIFrame": true,
"url": "<string>",
"views": 123,
"currentVersion": {
"createdAt": 123,
"id": "<string>",
"tags": [
{
"key": "<string>",
"value": "<string>"
}
],
"updatedAt": 123,
"bundle": {
"id": "<string>",
"name": "<string>"
},
"content": {
"mountDatasets": true,
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"gitRef": {
"value": "<string>"
},
"importedGitRepoRefs": [
{
"gitRef": {
"value": "<string>"
},
"repoId": "<string>",
"repoName": "<string>"
}
],
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"ref": "<string>",
"repoId": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"currentInstance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"deployment": {
"autoscalingSpecification": {
"enabled": true,
"maxReplicas": 15,
"minReplicas": 15,
"scaleDownStabilizationWindowSeconds": 1800,
"scaleUpStabilizationWindowSeconds": 1800,
"targetCpuAvgUtilizationPct": 50,
"targetMemoryAvgUtilizationPct": 50,
"useSessionAffinity": true
},
"hardwareTierId": "<string>",
"vanityUrl": "<string>"
},
"description": "<string>",
"versionNumber": 123
},
"description": "<string>",
"properties": [
{
"fields": [
{
"propertyId": "<string>",
"propertyLabel": "<string>",
"updatedAt": 123,
"updatedBy": {
"userId": "<string>",
"username": "<string>"
},
"value": "<string>"
}
],
"groupName": "<string>"
}
],
"taxonomyTags": [
{
"id": "<string>",
"label": "<string>",
"namespaceId": "<string>",
"description": "<string>",
"fullPath": [
"<string>"
],
"namespaceLabel": "<string>"
}
],
"thumbnailEtag": "<string>",
"updatedAt": 123,
"vanityUrl": "<string>"
},
"instance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"version": {
"createdAt": 123,
"id": "<string>",
"tags": [
{
"key": "<string>",
"value": "<string>"
}
],
"updatedAt": 123,
"bundle": {
"id": "<string>",
"name": "<string>"
},
"content": {
"mountDatasets": true,
"dataPlaneId": "<string>",
"dfsCommitId": "<string>",
"entryScript": "<string>",
"environmentId": "<string>",
"environmentRevisionId": "<string>",
"extendedIdentityPropagationToAppsEnabled": true,
"externalVolumeMountIds": [
"<string>"
],
"gitRef": {
"value": "<string>"
},
"importedGitRepoRefs": [
{
"gitRef": {
"value": "<string>"
},
"repoId": "<string>",
"repoName": "<string>"
}
],
"netAppVolumeIds": [
"<string>"
],
"resolvedCommits": {
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"importedGitRepos": [
{
"ref": "<string>",
"repoId": "<string>",
"repoName": "<string>"
}
],
"importedProjects": [
{
"commitId": "<string>",
"directoryName": "<string>",
"ownerId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"release": "<string>"
}
]
}
},
"currentInstance": {
"createdAt": 123,
"id": "<string>",
"status": "<string>",
"describeUrl": "<string>",
"dfsCommitId": "<string>",
"gitCommitId": "<string>",
"lastSynced": {
"syncedAt": 123,
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
},
"publisher": {
"id": "<string>",
"name": "<string>"
}
},
"deployment": {
"autoscalingSpecification": {
"enabled": true,
"maxReplicas": 15,
"minReplicas": 15,
"scaleDownStabilizationWindowSeconds": 1800,
"scaleUpStabilizationWindowSeconds": 1800,
"targetCpuAvgUtilizationPct": 50,
"targetMemoryAvgUtilizationPct": 50,
"useSessionAffinity": true
},
"hardwareTierId": "<string>",
"vanityUrl": "<string>"
},
"description": "<string>",
"versionNumber": 123
},
"warnings": [
"<string>"
]
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"errors": [
"<string>"
],
"requestId": "bbd78579-93c4-45ee-a983-0d5c8da6d5b1"
}{
"error": "<string>"
}Authorizations
Body
Request body for POST /apps/drafts. Idempotent per workspace.
On first call (no draft linked to this workspace yet), creates a new draft App with isDraft=true, vanityUrlNamespace=AppDrafts, entryPoint=null, authorId=caller, and projectId resolved from the workspace; missing app fields use defaults (name=Draft App, visibility=GRANT_BASED, etc.). The new draft's id is then linked to the workspace.
On re-entry (workspace already has a draft), returns the existing draft with any supplied DraftAppFields applied as a PATCH; missing fields leave the existing draft untouched. If the workspace's draft pointer references an App that was deleted out-of-band, the pointer is self-healed: a fresh draft is created and re-linked.
Optional initialVersion sub-flow: when initialVersion is supplied, a createAndStart is performed against the resulting draft after the draft itself has been ensured. The new version inherits draft defaulting (omitted content reference fields default to the previous running version when one exists), bundleId is forced empty on the draft App's version, and an instance is initiated. The response then carries the version (and instance, when start initiation succeeds) alongside the draft App.
The workspace this draft is scoped to. Required. Must be visible to the caller; unknown or hidden workspaces return 404.
Optional draft App field overrides. On create, missing fields use defaults. On re-entry, supplied fields PATCH the existing draft; missing fields leave the existing values untouched.
Show child attributes
Show child attributes
Optional initial-version createAndStart payload. When present, a createAndStart is performed against the draft after the draft is ensured. entryScript is required when initialVersion is supplied (drafts always require entryScript on the version since entryPoint is null on the App).
Show child attributes
Show child attributes
Optional id of an existing App the client plans to publish into. Not persisted. Currently advisory; the backend ignores it during draft creation.
Response
Success
Response body for POST /apps/drafts. The draft App is always present; version and instance are populated only when an initialVersion was supplied. If the initial-version start initiation fails, the version is still returned alongside a warnings array describing the failure.
Show child attributes
Show child attributes
Present only when an initialVersion was supplied AND start initiation succeeded.
Show child attributes
Show child attributes
The AppVersion created with this request. Present only when an initialVersion was supplied.
Show child attributes
Show child attributes
Non-fatal warnings (e.g., initial start initiation failure).
Related topics
Create App (v1)Publish content from a draft App (v1)Create App Version and Start (v1)Create App Version (v1)Was this page helpful?