---
title: "Create an installation options record"
method: POST
path: "/app/{app_id}/enterprise-portal/install-options"
tags: ["enterprisePortal"]
---

# Create an installation options record

`POST /app/{app_id}/enterprise-portal/install-options`

Create an installation options record for a customer describing the installation configuration. Automatically creating
a service account for the installation that can be used to perform the actual installation.
Optionally include generated install instructions by setting the includeInstructions query parameter to true.

## Path parameters

- `app_id` string, required

## Query parameters

- `includeInstructions` boolean

## Request body

- object
  - `admin_console_url` string — URL for the admin console, used for updates
  - `channel_id` string, required — Channel ID to use for the installation
  - `channel_release_sequence` integer, required — Channel release sequence number to use for the installation
  - `customer_id` string, required — The customer ID for which to create install options
  - `install_type` 'linux' | 'helm', required — Type of installation
  - `instance_name` string, required — Name of the installation instance, also used as service account name - must be unique per customer
  - `is_multi_node` boolean — Whether this is a multi-node installation (only applicable for linux install type)
  - `kubernetes_distribution` 'vanilla' | 'openshift' | 'rancher' | 'aks' | 'eks' | 'gke' — Kubernetes distribution that will be used for the helm installation (only applicable for helm install type)
  - `network_availability` 'airgap' | 'proxy' | 'online', required — Network availability for the installation environment
  - `registry_availability` 'online' | 'partial' | 'offline' — Registry availability for helm installations (only applicable for helm install type)

## Response `201`

CreateInstallOptionsResponse contains the response from creating install options.

- object
  - `install_options` CustomerInstallOptions
    - `admin_console_url` string
    - `assets_downloaded_at` string, date-time — New fields for tracking installation progress
    - `channel_id` string
    - `channel_release_sequence` integer
    - `customer_id` string
    - `id` string
    - `images_pulled_at` string, date-time
    - `install_type` string
    - `installation_completed_at` string, date-time
    - `instance_id` string
    - `instance_name` string
    - `is_multi_node` boolean
    - `kubernetes_distribution` string
    - `license_id` string
    - `network_availability` string
    - `os_distro` string
    - `os_version` string
    - `registry_authenticated_at` string, date-time
    - `registry_availability` string
    - `service_account_id` string
    - `started_at` string, date-time
    - `status` string
  - `instructions` InstallInstructionsResponse
    - `format` string — Version format ("basic")
    - `install_type` string — Installation type ("linux" or "helm")
    - `steps` InstallStepResponse[] — Sequential list of installation steps, note that the number and order will vary based on the install type and the install options themselves.
      - `commands` string[] — List of shell commands to execute (one per entry)
      - `description` string — Optional detailed description The contents of this field may change.
      - `step_name` string — Machine-readable step identifier (e.g., "download_assets")
      - `step_number` integer — Sequential step number (e.g., 2, 3, 4)
      - `title` string — Human-readable step title (e.g., "Download the installation assets") The contents of this field may change. For a persistent identifier, use the StepName field.
    - `title` string — Overall installation title
  - `service_account` ServiceAccount
    - `accountName` string
    - `createdAt` string, date-time
    - `customerId` string
    - `emailAddress` string
    - `id` string
    - `isRevoked` boolean
    - `lastUsedAt` string, date-time
    - `token` string
    - `tokenRegeneratedAt` string, date-time

## Other responses

- `400` — Returned on bad input
- `401` — Return if the caller is not authorized
- `403` — Returned if the caller does not have the needed permission
- `404` — Returned on resource not found

---

[API](https://skmtc.net/replicated/apis/vendor-api-v3-2.md) · [All operations](https://skmtc.net/replicated/apis/vendor-api-v3-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/replicated/vendor-api-v3-2/revisions/6fcf9e54aba4/schema)
