Skip to main content
POST
Publish content from a draft App (v1)

Authorizations

X-Domino-Api-Key
string
header
required

Path Parameters

appId
string
required

Body

application/json

Request body for POST /apps/{appId}/publish. The mode is implicit: the presence of targetAppId selects publish-into-existing, absence selects publish-as-new. versionOverrides is consumed by both branches and lets the caller override content (reproducibility) fields on a copy of the draft's last-run version before it is written to the destination App. appOverrides carries App-level field overrides for the newly created published App on publish-as-new; omitted fields fall back to the draft's values. start=true optionally launches the resulting App's newest version after the publish persists, with startOverrides carrying deployment (run-time) overrides.

appOverrides
object

Publish-as-new only. App-level field overrides applied when creating the new published App. Omitted fields fall back to the draft's values. Returns 422 when targetAppId is present because appOverrides is only applied when publish inserts a new App. Note that startOverrides can still write deployment fields back to the target App when start=true.

sendNotifications
boolean

Publish-as-new only. When true and the draft carried accessStatuses, the granted users on the newly-published App receive an email notification (the published App is a fresh insert, so every Allowed entry is treated as a new grant). Ignored on publish-into-existing, which doesn't touch the target App's accessStatuses. Defaults to false when omitted.

start
boolean
default:false

When true, the resulting App's newest version is started after the publish persists. Start initiation failures are surfaced as warnings on the response rather than rolling back the publish.

startOverrides
object

Deployment-only run-time overrides for the optional start initiation (deployment.hardwareTierId, deployment.autoscalingSpecification, deployment.vanityUrl, deployment.renderIFrame). Consumed only when start=true.

targetAppId
string

Optional. Present -> publish-into-existing (new version added to the target App; appOverrides returns 422). Absent -> publish-as-new (a brand-new published App is inserted).

versionOverrides
object

Per-field overrides applied to a copy of the draft's last-run AppVersion during publish. Consumed only by PublishAppRequestV1. Most fields use field-by-field orElse(publishBase.value) semantics: an unset override falls back to whatever the draft's last-run version carries. Imported-git override fields are patch-based instead: content.importedGitRepoRefPatches and content.resolvedCommits.importedGitRepos apply per-repoId upsert / tombstone patches on top of the publish base rather than replacing it wholesale; unpatched repos inherit their entries from the publish base. Content (reproducibility) and deployment (execution) settings are grouped under nested sub-objects matching AppVersionCreationRequestV1. bundleId interplay with publish flows:

  • Publish-as-new: new version's bundleId = versionOverrides.bundleId.orElse(null). - Publish-into-existing: new version's bundleId = versionOverrides.bundleId.orElse(targetApp.latestVersion.bundleId), matching the legacy update path's carry-forward semantic so governance continuity is preserved across republishes. Explicit override wins.

A supplied bundleId is validated via the Guardrails API; missing bundle -> 404. content.entryScript, when supplied, overrides the version's entry script (effective entry point). Persisted as the new App's entryPoint on publish-as-new; must match the target's entryPoint on publish-into-existing.

Response

Publish succeeded. Returns the resulting App (newly inserted for publish-as-new, the target App for publish-into-existing) plus the newly inserted version. When start=true the started instance is also returned (or a warning if start initiation failed; the version is durably persisted in either case).

Response body for POST /apps/{appId}/publish. app is the resulting destination App (newly inserted for publish-as-new, the target App for publish-into- existing). version is the newly inserted AppVersion. instance is populated only when request.start=true AND start initiation succeeded; if the version was persisted but start initiation failed, the response carries version plus a non-empty warnings array. The draft App itself is unchanged and is not returned in this response -- clients that still need it can read it via GET /apps/{draftId}.

app
object
required
version
object
required

The AppVersion created with this request.

instance
object

Present only when start initiation succeeded.

warnings
string[]

Non-fatal warnings (e.g., start initiation failure).