> ## 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 project template



## OpenAPI

````yaml /api-specs/cloud/public-api.yaml post /api/develop/v1/customer-project-templates
openapi: 3.0.3
info:
  title: Domino Public API
  description: Domino Public API Endpoints
  version: cloud
servers: []
security:
  - DominoApiKey: []
  - BearerAuthentication: []
tags:
  - name: AIGateway
  - name: AppInstances
  - name: AppVersions
  - name: Apps
  - name: AsyncPredictions
  - name: AuditTrail
  - name: BillingTag
  - name: BillingTagSettings
  - name: Cost
  - name: CustomMetrics
  - name: DataSource
  - name: DatasetRw
  - name: DeploymentTargets
  - name: Environments
  - name: Extensions
  - name: GenAI
  - name: HardwareTier
  - name: Jobs
  - name: ModelAPI
  - name: ModelAPIVersion
  - name: ModelDeployment
  - name: Organizations
  - name: PPM
  - name: PersonalAccessToken
  - name: ProjectSharedDatasets
  - name: ProjectTemplates
  - name: Projects
  - name: ProjectsCommits
  - name: ProjectsFiles
  - name: RegisteredModels
  - name: ServiceAccounts
  - name: Users
  - name: Workspaces
paths:
  /api/develop/v1/customer-project-templates:
    post:
      tags:
        - ProjectTemplates
      summary: Create project template
      operationId: createProjectTemplate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewCustomerTemplate'
        description: Project template to create
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerTemplate'
          description: Created
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
components:
  schemas:
    NewCustomerTemplate:
      properties:
        access:
          $ref: '#/components/schemas/ProjectTemplateAccess'
        billingTag:
          $ref: '#/components/schemas/BillingTagV1'
        definition:
          $ref: '#/components/schemas/NewProjectTemplateDefinition'
        description:
          type: string
        name:
          type: string
        sourceProject:
          $ref: '#/components/schemas/NewProjectTemplateSourceProject'
      required:
        - name
        - access
        - sourceProject
        - definition
      type: object
    CustomerTemplate:
      allOf:
        - $ref: '#/components/schemas/ProjectTemplate'
        - properties:
            definition:
              $ref: '#/components/schemas/ProjectTemplateDefinition'
            isArchived:
              type: boolean
            isCompanyOfficial:
              type: boolean
            sourceProject:
              $ref: '#/components/schemas/ProjectTemplateSourceProject'
          required:
            - sourceProject
            - definition
            - isArchived
            - isCompanyOfficial
          type: object
    ProjectTemplateAccess:
      properties:
        collaborators:
          items:
            $ref: '#/components/schemas/ProjectTemplateCollaborator'
          type: array
        visibility:
          enum:
            - private
            - all_non_anonymous_users
          type: string
      required:
        - visibility
        - collaborators
      type: object
    BillingTagV1:
      description: Billing Tag to assign to projects for cost aggregation
      properties:
        tag:
          description: The tag to be assigned to projects.
          type: string
      required:
        - tag
      type: object
    NewProjectTemplateDefinition:
      properties:
        settings:
          $ref: '#/components/schemas/NewProjectSettings'
      required:
        - settings
      type: object
    NewProjectTemplateSourceProject:
      properties:
        gitProviderCodeSpec:
          $ref: '#/components/schemas/TemplateBackingGitCodeSpec'
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
        included:
          items:
            $ref: '#/components/schemas/ProjectTemplateSourceProjectComponent'
          type: array
        netAppVolumeConfigs:
          $ref: '#/components/schemas/NetAppVolumeConfigs'
      required:
        - id
        - included
        - gitProviderCodeSpec
      type: object
    ProjectTemplate:
      properties:
        access:
          $ref: '#/components/schemas/ProjectTemplateAccess'
        base64Logo:
          type: string
        categories:
          items:
            type: string
          type: array
        created:
          format: date-time
          type: string
        description:
          type: string
        id:
          type: string
        isCompanyOfficial:
          description: Whether or not this template is marked as official
          type: boolean
        license:
          type: string
        name:
          type: string
        owner:
          $ref: '#/components/schemas/ProjectTemplateOwner'
        recommended:
          type: boolean
        revisionId:
          type: string
        taxonomyTags:
          description: Taxonomy tags associated with this template.
          items:
            $ref: '#/components/schemas/TaxonomyTag'
          type: array
        templateType:
          enum:
            - customer
            - ecosystem
          type: string
        updated:
          format: date-time
          type: string
      required:
        - templateType
        - id
        - name
        - created
        - updated
        - categories
        - owner
        - access
      type: object
    ProjectTemplateDefinition:
      properties:
        backingProject:
          $ref: '#/components/schemas/ProjectTemplateBackingProject'
        projectType:
          enum:
            - git_based
            - dfs
          type: string
        settings:
          $ref: '#/components/schemas/ProjectSettings'
      required:
        - backingProject
        - projectType
        - settings
      type: object
    ProjectTemplateSourceProject:
      properties:
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
        included:
          items:
            $ref: '#/components/schemas/ProjectTemplateSourceProjectComponent'
          type: array
        name:
          type: string
        owner:
          $ref: '#/components/schemas/ProjectOwner'
      required:
        - id
        - included
        - name
        - owner
      type: object
    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
    ProjectTemplateCollaborator:
      properties:
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
        role:
          enum:
            - template_user
          type: string
      required:
        - id
        - role
      type: object
    NewProjectSettings:
      properties:
        computeClusterEnvironmentRevision:
          $ref: '#/components/schemas/NewEnvironmentRevision'
        defaultEnvironmentRevision:
          $ref: '#/components/schemas/NewEnvironmentRevision'
        defaultHardwareTier:
          $ref: '#/components/schemas/NewHardwareTier'
      required:
        - defaultEnvironmentRevision
        - defaultHardwareTier
      type: object
    TemplateBackingGitCodeSpec:
      properties:
        credentialId:
          pattern: ^[0-9a-f]{24}$
          type: string
        repoName:
          type: string
        repoOwnerName:
          type: string
        visibility:
          $ref: '#/components/schemas/ProviderRepoVisibilityV1'
        writeType:
          $ref: '#/components/schemas/WriteTypeV1'
      required:
        - credentialId
        - repoName
        - repoOwnerName
      type: object
    ProjectTemplateSourceProjectComponent:
      enum:
        - Artifacts
        - Integrations
        - ExternalDataVolumes
        - Launchers
        - ImportedProjects
        - Tags
        - NetAppVolumes
        - Datasets
        - MountedDatasets
        - Code
        - ImportedRepositories
        - Goals
        - Apps
        - DataSources
      type: string
    NetAppVolumeConfigs:
      description: >
        Explicit volume copy/import configuration. When set, both fields are
        required. Volumes in copyNetAppVolumeIds are duplicated; volumes in
        importNetAppVolumeIds are added by reference. A volume may appear in
        both lists to be both copied and imported. Requires net_app_volumes in
        the included features list.
      properties:
        copyNetAppVolumeIds:
          description: Volume IDs to copy (duplicate) into the target project
          items:
            type: string
          type: array
        importNetAppVolumeIds:
          description: Volume IDs to import (add by reference) into the target project
          items:
            type: string
          type: array
      required:
        - copyNetAppVolumeIds
        - importNetAppVolumeIds
      type: object
    ProjectTemplateOwner:
      properties:
        link:
          type: string
        name:
          type: string
      required:
        - name
      type: object
    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
    ProjectTemplateBackingProject:
      properties:
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
        name:
          type: string
        owner:
          $ref: '#/components/schemas/ProjectOwner'
      required:
        - id
        - name
        - owner
      type: object
    ProjectSettings:
      properties:
        computeClusterEnvironmentRevision:
          $ref: '#/components/schemas/EnvironmentRevision'
        defaultEnvironmentRevision:
          $ref: '#/components/schemas/EnvironmentRevision'
        defaultHardwareTier:
          $ref: '#/components/schemas/HardwareTier'
      required:
        - defaultEnvironmentRevision
        - defaultHardwareTier
      type: object
    ProjectOwner:
      properties:
        username:
          type: string
      required:
        - username
      type: object
    NewEnvironmentRevision:
      properties:
        environmentId:
          pattern: ^[0-9a-f]{24}$
          type: string
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
      required:
        - id
        - environmentId
      type: object
    NewHardwareTier:
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
      type: object
    ProviderRepoVisibilityV1:
      description: >-
        The visibility of the code repo. Internal can only be used for Github
        Enterprise.
      enum:
        - public
        - private
        - internal
      type: string
    WriteTypeV1:
      description: The kind of repo to use as the code repo in a template
      enum:
        - Create
        - Import
        - ForceImport
      type: string
    EnvironmentRevision:
      properties:
        environment:
          $ref: '#/components/schemas/Environment'
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
      required:
        - id
        - environment
      type: object
    HardwareTier:
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
      type: object
    Environment:
      properties:
        id:
          pattern: ^[0-9a-f]{24}$
          type: string
        name:
          type: string
      required:
        - id
        - name
      type: object
  responses:
    '400':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Bad Request
    '401':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FailureEnvelopeV1'
      description: >-
        The current user cannot perform this operation because they are not
        logged in
    '403':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FailureEnvelopeV1'
      description: The current user is not authorized to perform this operation
    '404':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Not Found
    '500':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Internal Server Error
  securitySchemes:
    DominoApiKey:
      in: header
      name: X-Domino-Api-Key
      type: apiKey
    BearerAuthentication:
      in: header
      name: Authorization
      type: apiKey

````