> ## 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.

# 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.




## OpenAPI

````yaml /api-specs/6.3/public-api.json post /api/apps/v1/apps/drafts
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/drafts:
    post:
      tags:
        - Apps
      summary: Create or ensure a draft App for a workspace (v1)
      description: >
        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.
      operationId: createAppDraftV1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nucleus_CreateAppDraftRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nucleus_CreateAppDraftResponseV1'
          description: Success
        '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_CreateAppDraftRequestV1:
      description: >
        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.
      properties:
        app:
          $ref: '#/components/schemas/nucleus_DraftAppFields'
          description: >
            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.
        initialVersion:
          $ref: '#/components/schemas/nucleus_CreateAndStartAppVersionRequestV1'
          description: >
            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).
        targetAppId:
          description: >
            Optional id of an existing App the client plans to publish into. Not
            persisted. Currently advisory; the backend ignores it during draft
            creation.
          type: string
        workspaceId:
          description: >
            The workspace this draft is scoped to. Required. Must be visible to
            the caller; unknown or hidden workspaces return 404.
          type: string
      required:
        - workspaceId
      type: object
    nucleus_CreateAppDraftResponseV1:
      description: >
        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.
      properties:
        app:
          $ref: '#/components/schemas/nucleus_AppResponseV1'
        instance:
          $ref: '#/components/schemas/nucleus_AppInstanceSummaryResponseV1'
          description: >-
            Present only when an initialVersion was supplied AND start
            initiation succeeded.
        version:
          $ref: '#/components/schemas/nucleus_AppVersionResponseV1'
          description: >-
            The AppVersion created with this request. Present only when an
            initialVersion was supplied.
        warnings:
          description: Non-fatal warnings (e.g., initial start initiation failure).
          items:
            type: string
          type: array
      required:
        - app
      type: object
    nucleus_DraftAppFields:
      description: >
        Optional draft App metadata. Two App-level fields are intentionally
        absent:


        - `entryPoint`: drafts always carry entryPoint=null at the App level;
        the
          running version's `entryScript` is what surfaces on responses as a draft
          App's effective entry point.

        - `vanityUrl`: drafts always carry vanityUrl=null and
          vanityUrlNamespace=AppDrafts. Drafts are addressed exclusively by id
          (`/preview/<id>` via `ModelProductUri.generateModelProductUri`), so a
          vanity string would be reserved-but-invisible state. Vanity-URL ownership
          only enters the picture at publish time, where the resulting published
          App in the `Apps` namespace picks up either a request-supplied or
          randomly generated vanity. Supplying a vanityUrl via
          `initialVersion.startOverrides` on this endpoint, or via startOverrides
          on `POST /apps/{appId}/versions/{versionId}/start`, is rejected with 422
          when the parent App is a draft.
      properties:
        accessStatuses:
          items:
            $ref: '#/components/schemas/nucleus_AppAccessStatus'
          type: array
        configurationType:
          $ref: '#/components/schemas/nucleus_AppConfigurationType'
        description:
          type: string
        discoverable:
          type: boolean
        mountDatasets:
          type: boolean
        name:
          type: string
        renderIFrame:
          type: boolean
        visibility:
          enum:
            - AUTHENTICATED
            - GRANT_BASED
            - GRANT_BASED_STRICT
            - PUBLIC
          type: string
      type: object
    nucleus_CreateAndStartAppVersionRequestV1:
      description: >
        Request body for POST /apps/{appId}/versions/createAndStart and the
        optional initialVersion sub-flow on POST /apps/drafts.

        Content (reproducibility) and deployment (execution) settings are
        grouped under nested sub-objects matching AppVersionCreationRequestV1.
        Run-time overrides for the initiated instance (vanityUrl,
        autoscalingSpecification, etc.) are carried separately under
        `startOverrides`.

        Draft-specific defaulting: when the parent App is a draft AND a previous
        running version exists, omitted content reference fields default to the
        previous running version's values (commits, refs, environment, mounts,
        hardware tier).

        Governance only starts when a draft is published.
      properties:
        bundleId:
          description: Guardrails bundle ID. Not applicable on drafts.
          type: string
        content:
          $ref: '#/components/schemas/nucleus_AppVersionContentUpdate'
        deployment:
          $ref: '#/components/schemas/nucleus_AppVersionDeploymentUpdate'
        description:
          type: string
        startOverrides:
          $ref: '#/components/schemas/nucleus_StartAppVersionRequestV1'
          description: >
            Optional deployment-only run-time overrides for the initiated
            instance (`deployment.hardwareTierId`,
            `deployment.autoscalingSpecification`, `deployment.vanityUrl`,
            `deployment.renderIFrame`).
        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_AppConfigurationType:
      default: STANDARD
      description: >-
        Type of configuration for the app which determines different deployment
        resources and settings.
      enum:
        - STANDARD
        - AISYSTEM
      type: string
    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_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_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_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_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_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_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_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 App (v1)](/6.3/api-reference/apps/create-app-v1.md)
- [Publish content from a draft App (v1)](/6.3/api-reference/apps/publish-content-from-a-draft-app-v1.md)
- [Create App Version and Start (v1)](/6.3/api-reference/appversions/create-app-version-and-start-v1.md)
- [Create App Version (v1)](/6.3/api-reference/appversions/create-app-version-v1.md)
