> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish content from a draft App (v1)

> Publishes content from the draft App identified by `{appId}` into either a brand-new published App (publish-as-new) or an existing published App (publish-into-existing). The mode is selected implicitly by the request body: `targetAppId` present selects publish-into-existing, absent selects publish-as-new.
Both branches read the draft's *last-run* `AppVersion` (the version referenced by the most recent `AppInstance` on the draft) as the publish base, optionally apply content (reproducibility) overrides via `versionOverrides`, then write the result onto the destination App. For publish-as-new the destination is a new App with `isDraft=false` and `vanityUrlNamespace=Apps`; for publish-into-existing the destination is the target App identified by `targetAppId`. The draft App and its version history are NOT touched -- the draft persists post-publish so the same workspace can publish again.
Validation:
- The draft must exist and the caller must have publish permission on it. - The draft (and target App, when publishing into an existing app) must have
  configurationType=Standard.
- When publishing into an existing app, the draft and target must agree on
  configurationType and entryScript.
- If the draft has never been previewed and `versionOverrides` does not supply
  the required content fields (commitId, entryScript, environmentId,
  hardwareTierId), returns 422. Clients can use `versionOverrides` to publish
  without first previewing.
- If neither `versionOverrides.entryScript` nor the publish base supplies an
  entryScript, the published version uses `app.sh`.
- `appOverrides` is rejected with 422 when `targetAppId` is present because
  `appOverrides` is only applied when publish inserts a new App. Note that
  `startOverrides` can still write deployment fields such as `vanityUrl` /
  `renderIFrame` back to the target App when `start=true`.

Bundle continuity:
- Publish-as-new: the new version's `bundleId` is whatever the caller supplies,
  otherwise unset.
- Publish-into-existing: the new version inherits the target App's last
  `bundleId` unless the caller supplies a different one.




## OpenAPI

````yaml /api-specs/6.3/public-api.json post /api/apps/v1/apps/{appId}/publish
openapi: 3.0.3
info:
  title: Domino Public API
  description: Reference for Domino's public REST API endpoints.
  version: 6.3.0
  x-catalog-key: nucleus
servers:
  - url: https://mycluster.domino.tech
    description: >-
      Replace 'mycluster.domino.tech' with your Domino cluster hostname. For
      Domino Cloud customers, that is `your-subdomain`.domino.tech (e.g.,
      acme.domino.tech). For self-hosted deployments, it is the hostname you
      reach the Domino UI at.
security: []
tags:
  - name: AIGateway
    x-displayName: AIGateway
  - name: AppInstances
    x-displayName: AppInstances
  - name: AppVersions
    x-displayName: AppVersions
  - name: Apps
    x-displayName: Apps
  - name: AsyncPredictions
    x-displayName: AsyncPredictions
  - name: AuditTrail
    x-displayName: AuditTrail
  - name: BillingTag
    x-displayName: BillingTag
  - name: BillingTagSettings
    x-displayName: BillingTagSettings
  - name: Cost
    x-displayName: Cost
  - name: CustomMetrics
    x-displayName: CustomMetrics
  - name: DataSource
    x-displayName: DataSource
  - name: DatasetRw
    x-displayName: DatasetRw
  - name: DeploymentTargets
    x-displayName: DeploymentTargets
  - name: Environments
    x-displayName: Environments
  - name: Extensions
    x-displayName: Extensions
  - name: GenAI
    x-displayName: GenAI
  - name: HPC Jobs
    x-displayName: HPC Jobs
  - name: HardwareTier
    x-displayName: HardwareTier
  - name: Jobs
    x-displayName: Jobs
  - name: ModelAPI
    x-displayName: ModelAPI
  - name: ModelAPIVersion
    x-displayName: ModelAPIVersion
  - name: ModelDeployment
    x-displayName: ModelDeployment
  - name: Organizations
    x-displayName: Organizations
  - name: PPM
    x-displayName: PPM
  - name: PersonalAccessToken
    x-displayName: PersonalAccessToken
  - name: ProjectSharedDatasets
    x-displayName: ProjectSharedDatasets
  - name: ProjectTemplates
    x-displayName: ProjectTemplates
  - name: Projects
    x-displayName: Projects
  - name: ProjectsCommits
    x-displayName: ProjectsCommits
  - name: ProjectsFiles
    x-displayName: ProjectsFiles
  - name: RegisteredModels
    x-displayName: RegisteredModels
  - name: ServiceAccounts
    x-displayName: ServiceAccounts
  - name: Users
    x-displayName: Users
  - name: Workspaces
    x-displayName: Workspaces
  - name: nucleus_other
    x-displayName: other
  - name: PersonalAccessTokenAdmin
    x-displayName: PersonalAccessTokenAdmin
  - name: Git Credentials
    x-displayName: Git Credentials
  - name: Activity
    x-displayName: Activity
  - name: Admin
    x-displayName: Admin
  - name: Notifications
    x-displayName: Notifications
  - name: Adminnotifications
    x-displayName: Adminnotifications
  - name: UserManagement
    x-displayName: UserManagement
  - name: WhiteLabel
    x-displayName: WhiteLabel
  - name: Authentication and Authorization
    x-displayName: Authentication and Authorization
  - name: Code
    x-displayName: Code
  - name: ComputeCluster
    x-displayName: ComputeCluster
  - name: Control Center
    x-displayName: Control Center
  - name: controlcenter
    x-displayName: controlcenter
  - name: DataSourceCredential
    x-displayName: DataSourceCredential
  - name: DataMount
    x-displayName: DataMount
  - name: DataPlane
    x-displayName: DataPlane
  - name: dataset
    x-displayName: dataset
  - name: Datasets
    x-displayName: Datasets
  - name: datasetrw.api
    x-displayName: datasetrw.api
  - name: DatasetObjectStore
    x-displayName: DatasetObjectStore
  - name: DevelopV1ProjectTemplates
    x-displayName: DevelopV1ProjectTemplates
  - name: DevelopV1Projects
    x-displayName: DevelopV1Projects
  - name: Execution Events
    x-displayName: Execution Events
  - name: Files
    x-displayName: Files
  - name: Frontend
    x-displayName: Frontend
  - name: Gateway
    x-displayName: Gateway
  - name: Runs
    x-displayName: Runs
  - name: Search
    x-displayName: Search
  - name: Git
    x-displayName: Git
  - name: Metadata
    x-displayName: Metadata
  - name: Gruz
    x-displayName: Gruz
  - name: Guardrails
    x-displayName: Guardrails
  - name: Hardware Tier
    x-displayName: Hardware Tier
  - name: ActionableInsights
    x-displayName: ActionableInsights
  - name: Socket
    x-displayName: Socket
  - name: Job
    x-displayName: Job
  - name: Tags
    x-displayName: Tags
  - name: JobComments
    x-displayName: JobComments
  - name: LogsWithProblemSuggestion
    x-displayName: LogsWithProblemSuggestion
  - name: JobResults
    x-displayName: JobResults
  - name: Layout
    x-displayName: Layout
  - name: Metrics
    x-displayName: Metrics
  - name: MLFlow
    x-displayName: MLFlow
  - name: ModelManager
    x-displayName: ModelManager
  - name: Model Products
    x-displayName: Model Products
  - name: Project Goals
    x-displayName: Project Goals
  - name: ProjectManagement
    x-displayName: ProjectManagement
  - name: Templates
    x-displayName: Templates
  - name: Project
    x-displayName: Project
  - name: Launchers
    x-displayName: Launchers
  - name: Scheduled Jobs
    x-displayName: Scheduled Jobs
  - name: Quota
    x-displayName: Quota
  - name: RemoteFileSystem
    x-displayName: RemoteFileSystem
  - name: Scheduled Runs
    x-displayName: Scheduled Runs
  - name: Workspace
    x-displayName: Workspace
  - name: Logs
    x-displayName: Logs
  - name: WorkspaceComments
    x-displayName: WorkspaceComments
  - name: WorkspaceResults
    x-displayName: WorkspaceResults
  - name: Resource
    description: The Data Plane Resource API
    x-displayName: Resource
  - name: authz
    x-displayName: authz
  - name: volumes
    x-displayName: volumes
  - name: data transfers
    x-displayName: data transfers
  - name: downloads
    x-displayName: downloads
  - name: filesystems
    x-displayName: filesystems
  - name: snapshots
    x-displayName: snapshots
  - name: tasks
    x-displayName: tasks
  - description: Manage taxonomy namespaces.
    name: Tagging - Namespaces
    x-displayName: Tagging - Namespaces
  - description: Manage tags within namespaces.
    name: Tagging - Tags
    x-displayName: Tagging - Tags
  - description: Assign, remove, and list tag assignments on entities.
    name: Tagging - Entity Tags
    x-displayName: Tagging - Entity Tags
  - description: Look up entities by tag.
    name: Tagging - Entities
    x-displayName: Tagging - Entities
  - description: Fetch the full namespace + tag hierarchy.
    name: Tagging - Taxonomy Tree
    x-displayName: Tagging - Taxonomy Tree
  - description: Validate and import taxonomy data from a file.
    name: Tagging - Import
    x-displayName: Tagging - Import
  - description: Export the current taxonomy to a file.
    name: Tagging - Export
    x-displayName: Tagging - Export
  - description: Internal-only endpoints for service-account callers.
    name: Tagging - Internal
    x-displayName: Tagging - Internal
  - description: Manage property definitions and their groups.
    name: Properties - Definitions
    x-displayName: Properties - Definitions
  - description: Read and update an entity's property values.
    name: Properties - Values
    x-displayName: Properties - Values
  - description: Internal-only endpoints for service-account callers (properties).
    name: Properties - Internal
    x-displayName: Properties - Internal
  - name: config
    x-displayName: config
  - name: Workloads
    description: Everything related to deploying and managingDomino Workloads
    x-displayName: Workloads
  - name: Executor
    description: Executor-related commands
    x-displayName: Executor
  - name: HPC
    description: HPC workload management
    x-displayName: HPC
  - name: Endpoints
    x-displayName: Endpoints
  - name: mlflow-proxy_other
    x-displayName: other
  - name: attachments
    x-displayName: attachments
  - name: bundle-stages
    x-displayName: bundle-stages
  - name: bundles
    x-displayName: bundles
  - name: findings
    x-displayName: findings
  - name: drafts
    x-displayName: drafts
  - name: evidence-templates
    x-displayName: evidence-templates
  - name: policies
    x-displayName: policies
  - name: policy-versions
    x-displayName: policy-versions
  - name: policy-enforcers
    x-displayName: policy-enforcers
  - name: results
    x-displayName: results
  - name: rpc
    x-displayName: rpc
  - name: approvals
    x-displayName: approvals
  - description: >-
      Create, query, bulk-update, and evaluate priority-based access control
      rules.
    name: rules
    x-displayName: rules
  - name: domino-connect_other
    x-displayName: other
  - name: events
    x-displayName: events
  - name: curated-central-configs
    x-displayName: curated-central-configs
  - name: nodepools
    x-displayName: nodepools
  - name: ip-allowlist
    x-displayName: ip-allowlist
externalDocs:
  description: OpenAPI
  url: https://swagger.io/resources/open-api/
paths:
  /api/apps/v1/apps/{appId}/publish:
    post:
      tags:
        - Apps
      summary: Publish content from a draft App (v1)
      description: >
        Publishes content from the draft App identified by `{appId}` into either
        a brand-new published App (publish-as-new) or an existing published App
        (publish-into-existing). The mode is selected implicitly by the request
        body: `targetAppId` present selects publish-into-existing, absent
        selects publish-as-new.

        Both branches read the draft's *last-run* `AppVersion` (the version
        referenced by the most recent `AppInstance` on the draft) as the publish
        base, optionally apply content (reproducibility) overrides via
        `versionOverrides`, then write the result onto the destination App. For
        publish-as-new the destination is a new App with `isDraft=false` and
        `vanityUrlNamespace=Apps`; for publish-into-existing the destination is
        the target App identified by `targetAppId`. The draft App and its
        version history are NOT touched -- the draft persists post-publish so
        the same workspace can publish again.

        Validation:

        - The draft must exist and the caller must have publish permission on
        it. - The draft (and target App, when publishing into an existing app)
        must have
          configurationType=Standard.
        - When publishing into an existing app, the draft and target must agree
        on
          configurationType and entryScript.
        - If the draft has never been previewed and `versionOverrides` does not
        supply
          the required content fields (commitId, entryScript, environmentId,
          hardwareTierId), returns 422. Clients can use `versionOverrides` to publish
          without first previewing.
        - If neither `versionOverrides.entryScript` nor the publish base
        supplies an
          entryScript, the published version uses `app.sh`.
        - `appOverrides` is rejected with 422 when `targetAppId` is present
        because
          `appOverrides` is only applied when publish inserts a new App. Note that
          `startOverrides` can still write deployment fields such as `vanityUrl` /
          `renderIFrame` back to the target App when `start=true`.

        Bundle continuity:

        - Publish-as-new: the new version's `bundleId` is whatever the caller
        supplies,
          otherwise unset.
        - Publish-into-existing: the new version inherits the target App's last
          `bundleId` unless the caller supplies a different one.
      operationId: publishAppV1
      parameters:
        - in: path
          name: appId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nucleus_PublishAppRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nucleus_PublishAppResponseV1'
          description: >
            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).
        '400':
          $ref: '#/components/responses/nucleus_400'
        '401':
          $ref: '#/components/responses/nucleus_401'
        '403':
          $ref: '#/components/responses/nucleus_403'
        '404':
          $ref: '#/components/responses/nucleus_404'
        '422':
          $ref: '#/components/responses/nucleus_422'
        '500':
          $ref: '#/components/responses/nucleus_500'
      security:
        - nucleus_DominoApiKey: []
        - nucleus_BearerAuthentication: []
components:
  schemas:
    nucleus_PublishAppRequestV1:
      description: >
        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.
      properties:
        appOverrides:
          $ref: '#/components/schemas/nucleus_AppOverridesV1'
          description: >
            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:
          description: >
            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.
          type: boolean
        start:
          default: false
          description: >
            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.
          type: boolean
        startOverrides:
          $ref: '#/components/schemas/nucleus_StartAppVersionRequestV1'
          description: >
            Deployment-only run-time overrides for the optional start initiation
            (`deployment.hardwareTierId`, `deployment.autoscalingSpecification`,
            `deployment.vanityUrl`, `deployment.renderIFrame`). Consumed only
            when `start=true`.
        targetAppId:
          description: >
            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).
          type: string
        versionOverrides:
          $ref: '#/components/schemas/nucleus_VersionOverridesV1'
      type: object
    nucleus_PublishAppResponseV1:
      description: >
        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}`.
      properties:
        app:
          $ref: '#/components/schemas/nucleus_AppResponseV1'
        instance:
          $ref: '#/components/schemas/nucleus_AppInstanceSummaryResponseV1'
          description: Present only when start initiation succeeded.
        version:
          $ref: '#/components/schemas/nucleus_AppVersionResponseV1'
          description: The AppVersion created with this request.
        warnings:
          description: Non-fatal warnings (e.g., start initiation failure).
          items:
            type: string
          type: array
      required:
        - app
        - version
      type: object
    nucleus_AppOverridesV1:
      description: >
        App-level field overrides applied when creating the new published App
        during publish-as-new. 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`). For each field, the supplied value takes
        precedence; omitted fields fall back to whatever the draft carries.

        Precedence for fields that are also settable via `startOverrides`:
        `startOverrides.deployment.vanityUrl` supersedes `vanityUrl` here when
        `start=true`, and is written back to the App. Likewise for
        `renderIFrame`.

        `configurationType` is absent because the publish endpoint validates
        `configurationType=Standard` and does not support changing it at publish
        time. `entryPoint` / `entryScript` are absent because entry-point
        overrides belong to `versionOverrides.content.entryScript`.
      properties:
        accessStatuses:
          description: >
            Initial per-user/group access grants for the new published App.
            Replaces (does not merge with) the draft's accessStatuses when
            supplied. Defaults to the draft's accessStatuses when omitted.
          items:
            $ref: '#/components/schemas/nucleus_AppAccessStatus'
          type: array
        description:
          description: >
            App-level description for the new published App. Defaults to the
            draft's description when omitted. Distinct from
            `versionOverrides.description`, which is a version-level
            (release-notes) description.
          type: string
        discoverable:
          description: >
            Whether the new published App appears in App Gallery discovery.
            Defaults to the draft's discoverable setting when omitted.
          type: boolean
        mountDatasets:
          description: >
            App-level default for whether to mount Domino Datasets into the
            App's runtime. Defaults to the draft's mountDatasets setting when
            omitted.
          type: boolean
        name:
          description: >
            Name for the new published App. Defaults to the draft's name when
            omitted.
          type: string
        renderIFrame:
          description: >
            Whether the new published App renders inside an iframe. Defaults to
            the draft's renderIFrame setting when omitted. Superseded by
            `startOverrides.deployment.renderIFrame` when `start=true` (that
            value is written back to the App).
          type: boolean
        vanityUrl:
          description: >
            The new published App's vanity in the `Apps` namespace. If omitted,
            a random fallback is generated server-side. Superseded by
            `startOverrides.deployment.vanityUrl` when `start=true` (that value
            is written back to the App).
          type: string
        visibility:
          description: >
            Access-control visibility for the new published App. Defaults to the
            draft's visibility when omitted.
          enum:
            - AUTHENTICATED
            - GRANT_BASED
            - GRANT_BASED_STRICT
            - PUBLIC
          type: string
      type: object
    nucleus_StartAppVersionRequestV1:
      description: >
        Deployment overrides applied at launch. `deployment.hardwareTierId` and
        `deployment.autoscalingSpecification` are mirrored back to the version
        so it always reflects the last launch. `deployment.vanityUrl` and
        `deployment.renderIFrame` write back to the App on published starts and
        are rejected with 422 on draft starts.
      properties:
        deployment:
          $ref: '#/components/schemas/nucleus_AppVersionDeploymentUpdate'
          description: |
            Deployment overrides for this launch.
      type: object
    nucleus_VersionOverridesV1:
      description: >
        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.
      properties:
        bundleId:
          description: >
            Guardrails bundle to attach to the published version. See schema
            description for branch-specific carry-forward semantics.
          type: string
        content:
          $ref: '#/components/schemas/nucleus_AppVersionContentUpdate'
        deployment:
          $ref: '#/components/schemas/nucleus_AppVersionDeploymentUpdate'
        description:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/nucleus_AppVersionTag'
          type: array
      type: object
    nucleus_AppResponseV1:
      properties:
        accessControl:
          $ref: '#/components/schemas/nucleus_AppAccessControl'
        authorship:
          $ref: '#/components/schemas/nucleus_AppAuthorship'
        configurationType:
          $ref: '#/components/schemas/nucleus_AppConfigurationType'
        currentVersion:
          $ref: '#/components/schemas/nucleus_AppVersionResponseV1'
          description: >-
            The most recently started (which may be different from the most
            recently created) version of this App. If no version has been
            started, defaults to most recently created version.
        description:
          type: string
        entryPoint:
          type: string
        id:
          type: string
        mountDatasets:
          description: >-
            App-level default for whether to mount Domino Datasets into the
            App's runtime.
          type: boolean
        name:
          type: string
        project:
          $ref: '#/components/schemas/nucleus_AppProjectResponse'
        properties:
          description: Property values assigned to this app, grouped by group name.
          items:
            $ref: '#/components/schemas/nucleus_PropertyValueGroup'
          type: array
        renderIFrame:
          type: boolean
        taxonomyTags:
          description: >-
            Taxonomy tags assigned to this app. Omitted when the taxonomy
            feature is disabled.
          items:
            $ref: '#/components/schemas/nucleus_TaxonomyTag'
          type: array
        thumbnailEtag:
          type: string
        updatedAt:
          format: epoch
          type: number
        url:
          type: string
        vanityUrl:
          type: string
        views:
          type: number
      required:
        - id
        - name
        - project
        - entryPoint
        - renderIFrame
        - url
        - views
        - configurationType
        - authorship
        - accessControl
        - mountDatasets
      type: object
    nucleus_AppInstanceSummaryResponseV1:
      properties:
        createdAt:
          format: epoch
          type: number
        describeUrl:
          type: string
        dfsCommitId:
          description: The DFS commit ID that was used for this instance's execution.
          type: string
        gitCommitId:
          description: The git commit SHA that was used for this instance's execution.
          type: string
        id:
          type: string
        lastSynced:
          allOf:
            - $ref: '#/components/schemas/nucleus_AppInstanceLastSyncedState'
          description: >-
            The code state last successfully synced to the preview pod. Absent
            for non-preview instances or preview instances that have not yet
            been synced.
          nullable: true
        publisher:
          allOf:
            - $ref: '#/components/schemas/nucleus_AppUserResponse'
          description: User who started this run.
          nullable: true
        status:
          type: string
      required:
        - id
        - createdAt
        - status
      type: object
    nucleus_AppVersionResponseV1:
      properties:
        bundle:
          $ref: '#/components/schemas/nucleus_AppVersionBundle'
        content:
          $ref: '#/components/schemas/nucleus_AppVersionContent'
        createdAt:
          format: epoch
          type: number
        currentInstance:
          $ref: '#/components/schemas/nucleus_AppInstanceSummaryResponseV1'
          description: The most recently created instance for this AppVersion.
        deployment:
          $ref: '#/components/schemas/nucleus_AppVersionDeployment'
        description:
          type: string
        id:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/nucleus_AppVersionTag'
          type: array
        updatedAt:
          format: epoch
          type: number
        versionNumber:
          description: Monotonically increasing version number derived from creationOrder.
          format: int64
          type: integer
      required:
        - id
        - createdAt
        - updatedAt
        - tags
      type: object
    nucleus_ErrorV1:
      properties:
        code:
          description: Machine-readable error code.
          example: NOT_FOUND
          type: string
        message:
          description: Human-readable description of the error.
          example: The requested HPC Job could not be found.
          type: string
      required:
        - message
      type: object
    nucleus_FailureEnvelopeV1:
      properties:
        errors:
          description: Errors that caused a request to fail
          items:
            type: string
          type: array
        requestId:
          description: Id used to correlate a request with server actions.
          example: bbd78579-93c4-45ee-a983-0d5c8da6d5b1
          type: string
      required:
        - requestId
        - errors
      type: object
    nucleus_AppAccessStatus:
      properties:
        status:
          enum:
            - ALLOWED
            - DENIED
            - PENDING
          type: string
        userId:
          type: string
      required:
        - userId
        - status
      type: object
    nucleus_AppVersionDeploymentUpdate:
      description: >
        Execution settings for the version. All fields are optional; omitted
        fields fall back to App-level defaults or the previous version's values
        depending on context. Mirrors the response-side AppVersionDeployment
        shape.
      properties:
        autoscalingSpecification:
          $ref: '#/components/schemas/nucleus_AppAutoscalingSpecification'
        hardwareTierId:
          type: string
        renderIFrame:
          description: >
            Deployment-field override for App-level renderIFrame. Only valid
            when starting a published App version: the override is written back
            to the App alongside launch (mirrors the vanityUrl writeback) so the
            value reflects the running version. Returns 422 when supplied on a
            draft start, since drafts rebaseline renderIFrame from the draft App
            on publish and any override would be silently lost.
          type: boolean
        vanityUrl:
          type: string
      type: object
    nucleus_AppVersionContentUpdate:
      description: >
        Reproducibility fields that define the version's content. All fields are
        optional; omitted fields fall back to App-level defaults or the previous
        draft's values depending on context. Mirrors the response-side
        AppVersionContent shape.
      properties:
        dataPlaneId:
          description: >
            Target data plane ID. If omitted but hardwareTierId is provided in
            deployment, auto-populated from the hardware tier's data plane.
            Returns 422 if both are provided and they don't match.
          type: string
        dfsCommitId:
          type: string
        entryScript:
          description: Effective entry point for the draft App version.
          type: string
        environmentId:
          type: string
        environmentRevisionId:
          type: string
        extendedIdentityPropagationToAppsEnabled:
          type: boolean
        externalVolumeMountIds:
          items:
            type: string
          type: array
        gitRef:
          $ref: '#/components/schemas/nucleus_GitRef'
        importedGitRepoRefPatches:
          description: >
            Per-`repoId` patches applied to the version's imported-git-repo
            reference list. The baseline the patches apply over is
            endpoint-specific: the prior running version's references when
            iterating a draft, the publish base's references when publishing,
            and the project's currently-configured references otherwise.
          items:
            $ref: '#/components/schemas/nucleus_ImportedGitRepoRefPatch'
          type: array
        mountDatasets:
          description: >
            Per-version override of the App-level mountDatasets default for
            whether to mount Domino Datasets into this version's runtime. When
            omitted, the App-level default applies.
          type: boolean
        netAppVolumeIds:
          items:
            type: string
          type: array
        resolvedCommits:
          $ref: '#/components/schemas/nucleus_ResolvedCommitsUpdate'
      type: object
    nucleus_AppVersionTag:
      properties:
        key:
          type: string
        value:
          type: string
      required:
        - key
        - value
      type: object
    nucleus_AppAccessControl:
      description: Visibility and access-grant settings for an App.
      properties:
        accessStatuses:
          items:
            $ref: '#/components/schemas/nucleus_AppAccessStatus'
          type: array
        discoverable:
          type: boolean
        visibility:
          enum:
            - AUTHENTICATED
            - GRANT_BASED
            - GRANT_BASED_STRICT
            - PUBLIC
          type: string
      required:
        - visibility
        - accessStatuses
        - discoverable
      type: object
    nucleus_AppAuthorship:
      description: >-
        Identity metadata for an App: whether it is a draft and the user who
        created it.
      properties:
        author:
          allOf:
            - $ref: '#/components/schemas/nucleus_AppUserResponse'
          description: User who created this App.
          nullable: true
        isDraft:
          description: >-
            True when this App is a workspace-scoped draft. Always false for
            published Apps.
          type: boolean
      required:
        - isDraft
      type: object
    nucleus_AppConfigurationType:
      default: STANDARD
      description: >-
        Type of configuration for the app which determines different deployment
        resources and settings.
      enum:
        - STANDARD
        - AISYSTEM
      type: string
    nucleus_AppProjectResponse:
      properties:
        id:
          type: string
        name:
          type: string
        ownerId:
          type: string
        ownerUsername:
          type: string
        projectType:
          enum:
            - Analytic
            - Dataset
            - Template
          type: string
      required:
        - id
        - projectType
        - name
        - ownerId
        - ownerUsername
      type: object
    nucleus_PropertyValueGroup:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/nucleus_PropertyValue'
          type: array
        groupName:
          description: Group name. "Ungrouped" for fields with no group.
          type: string
      required:
        - groupName
        - fields
      type: object
    nucleus_TaxonomyTag:
      properties:
        description:
          type: string
        fullPath:
          description: >-
            Ancestor labels from root to direct parent. Empty for root-level
            tags.
          items:
            type: string
          type: array
        id:
          type: string
        label:
          type: string
        namespaceId:
          type: string
        namespaceLabel:
          type: string
      required:
        - id
        - label
        - namespaceId
      type: object
    nucleus_AppInstanceLastSyncedState:
      description: >-
        A snapshot of the commit state after a successful live sync to a running
        preview instance.
      properties:
        dfsCommitId:
          description: DFS commit SHA currently running in the preview pod.
          nullable: true
          type: string
        importedRepoCommits:
          description: >-
            Commit SHAs for each imported git repo currently running in the
            preview pod.
          items:
            $ref: '#/components/schemas/nucleus_AppInstanceLastSyncedRepoCommit'
          type: array
        mainRepoCommitId:
          description: Main git repo commit SHA currently running in the preview pod.
          nullable: true
          type: string
        syncedAt:
          description: Epoch timestamp (ms) when the last successful sync completed.
          format: epoch
          type: number
      required:
        - syncedAt
      type: object
    nucleus_AppUserResponse:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
        name:
          type: string
    nucleus_AppVersionBundle:
      properties:
        id:
          description: Guardrails bundle ID. Immutable after creation.
          type: string
        name:
          type: string
      type: object
    nucleus_AppVersionContent:
      description: Reproducibility fields that define the version's content.
      properties:
        dataPlaneId:
          nullable: true
          type: string
        dfsCommitId:
          type: string
        entryScript:
          description: Effective entry point for the App version.
          type: string
        environmentId:
          type: string
        environmentRevisionId:
          type: string
        extendedIdentityPropagationToAppsEnabled:
          type: boolean
        externalVolumeMountIds:
          items:
            type: string
          type: array
        gitRef:
          $ref: '#/components/schemas/nucleus_GitRef'
        importedGitRepoRefs:
          description: >
            Imported-git-repo references recorded on this version. A subset of
            `resolvedCommits.importedGitRepos` by `repoId`; entries omitted from
            this list use the project's currently-configured ref at run time.
            Sorted by `repoId`.
          items:
            $ref: '#/components/schemas/nucleus_ImportedGitRepoRef'
          type: array
        mountDatasets:
          description: >-
            Whether to mount Domino Datasets into the App's runtime for this
            version.
          type: boolean
        netAppVolumeIds:
          items:
            type: string
          type: array
        resolvedCommits:
          $ref: '#/components/schemas/nucleus_ResolvedCommits'
      required:
        - mountDatasets
      type: object
    nucleus_AppVersionDeployment:
      description: Execution settings for the version.
      properties:
        autoscalingSpecification:
          $ref: '#/components/schemas/nucleus_AppAutoscalingSpecification'
        hardwareTierId:
          type: string
        vanityUrl:
          type: string
      type: object
    nucleus_AppAutoscalingSpecification:
      properties:
        enabled:
          type: boolean
        maxReplicas:
          maximum: 30
          minimum: 1
          type: integer
        minReplicas:
          maximum: 30
          minimum: 1
          type: integer
        scaleDownStabilizationWindowSeconds:
          maximum: 3600
          minimum: 0
          type: integer
        scaleUpStabilizationWindowSeconds:
          maximum: 3600
          minimum: 0
          type: integer
        targetCpuAvgUtilizationPct:
          maximum: 100
          minimum: 1
          type: integer
        targetMemoryAvgUtilizationPct:
          maximum: 100
          minimum: 1
          type: integer
        useSessionAffinity:
          type: boolean
      required:
        - enabled
      type: object
    nucleus_GitRef:
      properties:
        type:
          enum:
            - head
            - commitId
            - branches
            - tags
            - custom
          type: string
        value:
          type: string
      required:
        - type
      type: object
    nucleus_ImportedGitRepoRefPatch:
      description: >
        Per-`repoId` patch entry for the stored imported-git-repo reference
        list. A non-null `gitRef` sets the reference for `repoId` on this
        version; a `null` or omitted `gitRef` drops `repoId` from the list (the
        run-time ref then falls back to the project's currently-configured ref).

        Within a single request the last entry for a given `repoId` wins.
      properties:
        gitRef:
          allOf:
            - $ref: '#/components/schemas/nucleus_GitRef'
          nullable: true
        repoId:
          type: string
      required:
        - repoId
      type: object
    nucleus_ResolvedCommitsUpdate:
      description: >
        Pre-resolved commit and import snapshot information supplied at version
        creation time. When provided, these values bypass the commit resolver
        and are persisted directly. All fields are optional. Field names mirror
        the response-side ResolvedCommits shape so request and response use the
        same vocabulary.

        `importedGitRepos` carries per-`repoId` patch entries rather than a full
        replacement list: each entry upserts (`ref` set) or tombstones (`ref`
        omitted or null) the resolved pin for that repo. The full set of pinned
        imports for the new version is computed by applying these patches over
        the baseline (the prior version's resolved imports on draft re-iteration
        / publish; the project-current set on first-version creation). Repos
        with no patch entry inherit their baseline pin.
      properties:
        dfsCommitId:
          description: >-
            Pre-resolved DFS commit ID; bypasses the commit resolver when
            provided.
          type: string
        gitCommitId:
          description: >-
            Pre-resolved git commit SHA; bypasses the commit resolver when
            provided.
          type: string
        importedGitRepos:
          description: >
            Per-`repoId` patches against the baseline resolved imports. See the
            schema description above.
          items:
            $ref: '#/components/schemas/nucleus_ImportedGitRepoSnapshotPatch'
          type: array
        importedProjects:
          description: >-
            Pre-resolved imported project snapshots; bypasses the resolver when
            provided.
          items:
            $ref: '#/components/schemas/nucleus_ImportedProjectSnapshot'
          type: array
      type: object
    nucleus_PropertyValue:
      properties:
        propertyId:
          type: string
        propertyLabel:
          type: string
        status:
          enum:
            - active
            - deprecated
          type: string
        type:
          enum:
            - text
            - number
            - date
            - boolean
            - url
            - user
            - organization
            - user_or_org
            - select
            - multi_select
          type: string
        updatedAt:
          format: epoch
          type: number
        updatedBy:
          $ref: '#/components/schemas/nucleus_PropertyUpdatedBy'
        value:
          description: >-
            Encoded scalar value as stored upstream; encoding depends on type.
            Absent when no value is set.
          type: string
      required:
        - propertyId
        - propertyLabel
        - type
        - status
      type: object
    nucleus_AppInstanceLastSyncedRepoCommit:
      properties:
        ref:
          description: The commit SHA currently running for this imported repo.
          type: string
        repoId:
          description: The imported git repo ID.
          type: string
      required:
        - repoId
        - ref
      type: object
    nucleus_ImportedGitRepoRef:
      description: >
        Imported-git-repo reference recorded on a version. The companion list
        `resolvedCommits.importedGitRepos` covers the same `repoId` set (and may
        additionally cover `repoId`s absent here); entries omitted from this
        list use the project's currently-configured ref at run time.
      properties:
        gitRef:
          $ref: '#/components/schemas/nucleus_GitRef'
        repoId:
          type: string
        repoName:
          type: string
      required:
        - repoId
        - repoName
        - gitRef
      type: object
    nucleus_ResolvedCommits:
      description: >-
        Resolved commit and import snapshot information captured at version
        creation time.
      properties:
        dfsCommitId:
          description: The DFS commit ID resolved at version creation time.
          type: string
        gitCommitId:
          description: The git commit SHA resolved at version creation time.
          type: string
        importedGitRepos:
          description: Imported git repo snapshots resolved at version creation time.
          items:
            $ref: '#/components/schemas/nucleus_ImportedGitRepoSnapshot'
          type: array
        importedProjects:
          description: Imported project snapshots resolved at version creation time.
          items:
            $ref: '#/components/schemas/nucleus_ImportedProjectSnapshot'
          type: array
      type: object
    nucleus_ImportedGitRepoSnapshotPatch:
      description: >
        Per-`repoId` patch entry for the resolved imported-git-repo snapshot
        list. A non-null `ref` pins the commit for `repoId` on this version (no
        resolution performed); a `null` or omitted `ref` drops `repoId` from the
        snapshot list. `repoName` is optional; when omitted the server fills it
        from the project's enabled-repo list at request time.
      properties:
        ref:
          nullable: true
          type: string
        repoId:
          type: string
        repoName:
          type: string
      required:
        - repoId
      type: object
    nucleus_ImportedProjectSnapshot:
      properties:
        commitId:
          type: string
        directoryName:
          type: string
        ownerId:
          type: string
        projectId:
          type: string
        projectName:
          type: string
        release:
          type: string
      required:
        - projectId
        - projectName
        - ownerId
        - directoryName
        - commitId
      type: object
    nucleus_PropertyUpdatedBy:
      properties:
        userId:
          type: string
        username:
          type: string
      required:
        - userId
      type: object
    nucleus_ImportedGitRepoSnapshot:
      properties:
        ref:
          type: string
        repoId:
          type: string
        repoName:
          type: string
      required:
        - repoId
        - repoName
        - ref
      type: object
  responses:
    nucleus_400:
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Bad Request
    nucleus_401:
      content:
        application/json:
          example:
            code: UNAUTHORIZED
            message: Authentication is required to access this resource.
          schema:
            $ref: '#/components/schemas/nucleus_ErrorV1'
      description: Unauthorized - authentication is required or has failed.
    nucleus_403:
      content:
        application/json:
          example:
            code: FORBIDDEN
            message: You do not have permission to perform this action.
          schema:
            $ref: '#/components/schemas/nucleus_ErrorV1'
      description: Forbidden - the caller lacks permission to perform this action.
    nucleus_404:
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Not Found
    nucleus_422:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/nucleus_FailureEnvelopeV1'
      description: >-
        The server understands the content type of the request entity, and the
        syntax of the request entity is correct, but it was unable to process
        the contained instructions.
    nucleus_500:
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Internal Server Error
  securitySchemes:
    nucleus_DominoApiKey:
      type: apiKey
      name: X-Domino-Api-Key
      in: header
    nucleus_BearerAuthentication:
      type: apiKey
      name: Authorization
      in: header

````

## Related topics

- [Create or ensure a draft App for a workspace (v1)](/6.3/api-reference/apps/create-or-ensure-a-draft-app-for-a-workspace-v1.md)
- [Create App Version and Start (v1)](/6.3/api-reference/appversions/create-app-version-and-start-v1.md)
- [Create App (v1)](/6.3/api-reference/apps/create-app-v1.md)
- [Create App Version (v1)](/6.3/api-reference/appversions/create-app-version-v1.md)
