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

# API reference: 2026.11.06

> Field reference for the vantage.abbyy.com/v1alpha1 Vantage custom resource that drives Vantage 3.0 self-hosted installations.

## Artifact versions

| Artifact | Version |
| - | - |
| `vantage-operator` chart | `0.92.22` |
| `vantage-selfhosted` chart | `0.92.22` |
| `vantage-operator` image | `v0.92.22` |

The Vantage 3.0 self-hosted installer is driven by a single Kubernetes custom resource: a `Vantage` object in the `vantage.abbyy.com/v1alpha1` API group. The fields below are the full contract between you and the operator.

For a conceptual overview of how the operator consumes this resource, see [Architecture](https://docs.abbyy.com/vantage/self-hosted/v3.0/architecture.md). For an installation procedure, choose [Azure](https://docs.abbyy.com/vantage/self-hosted/v3.0/providers/azure.md) or [Self-Managed Kubernetes](https://docs.abbyy.com/vantage/self-hosted/v3.0/providers/self-managed.md).

## API group

| Group | Version | Resource |
| - | - | - |
| `vantage.abbyy.com` | `v1alpha1` | `Vantage` |

## Vantage

Vantage is the Schema for the vantages API

| Field | Type | Required | Description |
| - | - | - | - |
| `apiVersion` | `string` | Yes | vantage.abbyy.com/v1alpha1 |
| `kind` | `string` | Yes | Vantage |
| `metadata` | `object` | Yes | Refer to the Kubernetes API documentation for the fields of the `metadata` field. |
| `spec` | `object` | Yes | spec defines the desired state of Vantage. See [`spec`](#vantagespec). |
| `status` | `object` | No | status defines the observed state of Vantage. See [`status`](#vantagestatus). |

> [!NOTE]
>
> **`spec` validation**: `!self.reportingEnabled || !has(self.databaseProvider) || self.databaseProvider == 'SqlServer'`: reportingEnabled requires databaseProvider 'SqlServer'; reporting is a SQL Server-only feature and cannot be used with PostgreSQL

## Vantage.spec

spec defines the desired state of Vantage

| Field | Type | Required | Description |
| - | - | - | - |
| `dnsRecord` | `string` | Yes | dnsRecord is the DNS record for the vantage installation Format: `hostname`. |
| `mailFrom` | `string` | Yes | mailFrom is the email address used as the sender for outgoing emails Format: `email`. |
| `platformAdminEmail` | `string` | Yes | platformAdminEmail is the email address of the platform administrator Format: `email`. |
| `secrets` | `object` | Yes | secrets selects and configures the secrets provider. Exactly one provider must be specified. See [`secrets`](#vantagespecsecrets). |
| `updatePolicy` | `object` | Yes | updatePolicy controls how the operator handles Vantage upgrades. See [`updatePolicy`](#vantagespecupdatepolicy). |
| `vantageVersion` | `string` | Yes | vantageVersion is the Vantage Cloud version the release was built from. It is cosmetic and does not change what is installed. |
| `workloads` | `object` | Yes | workloads configures the ConfigMap containing data about charts and images. See [`workloads`](#vantagespecworkloads). |
| `argocd` | `object` | No | argocd configures the Argo CD resources the operator creates to install Vantage workloads. Omit it to install into the "default" project. See [`argocd`](#vantagespecargocd). |
| `databaseProvider` | `enum` | No | databaseProvider selects the database engine used by all Vantage services. Default: `SqlServer` · Enum: `SqlServer, PostgreSQL`. |
| `debug` | `boolean` | No | debug controls whether workloads are installed in debug mode Default: `false`. |
| `idReadingEnabled` | `boolean` | No | idReadingEnabled enables ID reading features Default: `false`. |
| `keda` | `object` | No | keda configures KEDA settings. If not specified, KEDA support will be disabled. See [`keda`](#vantagespeckeda). |
| `minimalInstall` | `boolean` | No | minimalInstall configures workloads to be deployed with minimal resource configurations Default: `false`. |
| `ociMigration` | `object` | No | ociMigration configures copying artifacts from a source registry to a destintion before install. Omit entirely or set enabled=false to skip migration. When enabled, destination is required. See [`ociMigration`](#vantagespecocimigration). |
| `reportingEnabled` | `boolean` | No | reportingEnabled enables SQL Server reporting features. SQL Server only — the reporting workload runs SQL-Server-specific migrations and is not supported on PostgreSQL. Setting this to true requires databaseProvider 'SqlServer' (enforced by the spec validation above); it is rejected with PostgreSQL. Default: `false`. |
| `reverseProxy` | `boolean` | No | reverseProxy ensures Vantage application services are configured to run behind a reverse proxy which terminates TLS. Default: `false`. |
| `serviceAccountName` | `string` | No | serviceAccountName is the name of the service account to use for Vantage workloads. Omit to use the default service account. Individual workloads can override this via workloads.serviceAccounts. Default: `default` · Minimum length: `1`. |
| `smtp` | `object` | No | smtp configures the SMTP mail server. If not specified, Sendgrid will be used as mail provider. See [`smtp`](#vantagespecsmtp). |
| `storage` | `object` | No | storage configures advanced storage options. See [`storage`](#vantagespecstorage). |
| `techcore` | `object` | No | techcore contains configuration for the TechCore processing engine. See [`techcore`](#vantagespectechcore). |

> [!NOTE]
>
> **`secrets` validation**: `has(self.kubernetes) != has(self.azure)`: exactly one provider must be specified

> [!NOTE]
>
> **`updatePolicy` validation**: `!has(self.auto)`: automatic updates are not yet supported

> [!NOTE]
>
> **`updatePolicy` validation**: `(has(self.auto) ? 1 : 0) + (has(self.manual) ? 1 : 0) == 1`: exactly one update policy must be specified

> [!NOTE]
>
> **`ociMigration` validation**: `!has(self.enabled) || self.enabled == false || has(self.destination)`: destination is required when ociMigration is enabled

> [!NOTE]
>
> **`storage` validation**: `!has(self.s3)`: s3 storage is not yet supported

> [!NOTE]
>
> **`storage` validation**: `(has(self.azure) ? 1 : 0) + (has(self.s3) ? 1 : 0) + (has(self.custom) ? 1 : 0) <= 1`: at most one storage provider can be specified

## Vantage.spec.secrets

secrets selects and configures the secrets provider.
Exactly one provider must be specified.

| Field | Type | Required | Description |
| - | - | - | - |
| `azure` | `object` | No | azure configures Azure Key Vault (via the Secrets Store CSI Driver) as the secrets source. See [`azure`](#vantagespecsecretsazure). |
| `kubernetes` | `object` | No | kubernetes configures Kubernetes native Secrets as the secrets source. See [`kubernetes`](#vantagespecsecretskubernetes). |

## Vantage.spec.secrets.azure

azure configures Azure Key Vault (via the Secrets Store CSI Driver) as the secrets source.

| Field | Type | Required | Description |
| - | - | - | - |
| `keyVaultName` | `string` | Yes | keyVaultName is the Azure Key Vault that holds the secrets. |
| `tenantId` | `string` | Yes | tenantId is the Azure AD tenant that owns the Key Vault. |
| `clientId` | `string` | No | clientId is the Azure AD client ID of the user-assigned managed identity that has read access to the Key Vault. Required when identityMode is "workloadIdentity" (the default). |
| `identityMode` | `enum` | No | identityMode selects how the CSI driver authenticates against Azure. Default: `workloadIdentity` · Enum: `workloadIdentity, podIdentity, vmManagedIdentity`. |
| `objects` | `map[string]object` | No | objects optionally overrides the mapping from a secret alias (as referenced by workloads-secrets.yml) to a specific Key Vault object. When an alias is not present in this map, the alias itself is used as the Key Vault object name and the object is fetched as type "secret". See [`objects`](#vantagespecsecretsazureobjectskey). |
| `userAssignedIdentityID` | `string` | No | userAssignedIdentityID is the client ID of the user-assigned managed identity to use when identityMode is "vmManagedIdentity". |

## Vantage.spec.secrets.azure.objects\[key]

AzureSecretObjectConfig describes a single Key Vault object that backs a
secret alias.

| Field | Type | Required | Description |
| - | - | - | - |
| `objectName` | `string` | Yes | objectName is the name of the object in Azure Key Vault. |
| `objectType` | `enum` | No | objectType is the Key Vault object kind. Defaults to "secret". Default: `secret` · Enum: `secret, key, cert`. |
| `objectVersion` | `string` | No | objectVersion pins a specific Key Vault object version. Defaults to the latest version. |

## Vantage.spec.secrets.kubernetes

kubernetes configures Kubernetes native Secrets as the secrets source.

| Field | Type | Required | Description |
| - | - | - | - |
| `objects` | `map[string]object` | No | objects defines the Kubernetes secrets used. If not defined, the default secret names will be used. See [`objects`](#vantagespecsecretskubernetesobjectskey). |

## Vantage.spec.secrets.kubernetes.objects\[key]

| Field | Type | Required | Description |
| - | - | - | - |
| `secretName` | `string` | Yes | secretName is the name of the Kubernetes Secret |

## Vantage.spec.updatePolicy

updatePolicy controls how the operator handles Vantage upgrades.

| Field | Type | Required | Description |
| - | - | - | - |
| `manual` | `object` | No | manual disables automatic upgrades. Upgrades are performed by installing a new version of the operator Helm chart. |

Not yet supported. The operator rejects a resource that sets these fields.

| Field | Type | Required | Description |
| - | - | - | - |
| `auto` | `object` | No | auto enables automatic version upgrades. Not yet implemented. See [`auto`](#vantagespecupdatepolicyauto). |

## Vantage.spec.updatePolicy.auto

auto enables automatic version upgrades. Not yet implemented.

| Field | Type | Required | Description |
| - | - | - | - |
| `releaseURL` | `string` | Yes | releaseURL is the URL to fetch the Vantage release bundle from. Format: `uri`. |

## Vantage.spec.workloads

workloads configures the ConfigMap containing data about charts and images

| Field | Type | Required | Description |
| - | - | - | - |
| `configMap` | `string` | Yes | configMap is name of the ConfigMap containing the workloads data |
| `metadataTemplateKey` | `string` | Yes | metadataTemplateKey is the key within the ConfigMap containing the metadata template about installing the charts |
| `secretsKey` | `string` | Yes | secrets is the key within the ConfigMap containing the secrets metadata. |
| `workloadsKey` | `string` | Yes | workloadsKey is the key within the ConfigMap containing the list of charts and images |
| `additionalMetadataKey` | `string` | No | additionalMetadataKey is the key within the ConfigMap containing additional metadata about installing charts |
| `pods` | `object` | No | pods configures metadata added to the pods of workloads. See [`pods`](#vantagespecworkloadspods). |
| `serviceAccounts` | `object` | No | serviceAccounts overrides spec.serviceAccountName for specific workloads. See [`serviceAccounts`](#vantagespecworkloadsserviceaccounts). |

## Vantage.spec.workloads.pods

pods configures metadata added to the pods of workloads.

| Field | Type | Required | Description |
| - | - | - | - |
| `charts` | `map[string]object` | No | charts maps chart names to metadata added to the pods of that chart's workloads, in addition to (and taking precedence over) the metadata for every workload. See [`charts`](#vantagespecworkloadspodschartskey). |
| `labels` | `map[string]string` | No | labels are added to the pods of every workload. |

## Vantage.spec.workloads.pods.charts\[key]

ChartPodsConfig defines metadata added to the pods of workloads within a single Vantage Helm chart.

| Field | Type | Required | Description |
| - | - | - | - |
| `deployment` | `object` | No | deployment configures the pods of the chart's deployment. See [`deployment`](#vantagespecworkloadspodschartskeydeployment). |
| `migrator` | `object` | No | migrator configures the pods of the chart's migrator job. See [`migrator`](#vantagespecworkloadspodschartskeymigrator). |
| `statefulSet` | `object` | No | statefulSet configures the pods of the chart's statefulset. See [`statefulSet`](#vantagespecworkloadspodschartskeystatefulset). |

## Vantage.spec.workloads.pods.charts\[key].deployment

deployment configures the pods of the chart's deployment.

| Field | Type | Required | Description |
| - | - | - | - |
| `labels` | `map[string]string` | No | labels are added to the workload's pods. |

## Vantage.spec.workloads.pods.charts\[key].migrator

migrator configures the pods of the chart's migrator job.

| Field | Type | Required | Description |
| - | - | - | - |
| `labels` | `map[string]string` | No | labels are added to the workload's pods. |

## Vantage.spec.workloads.pods.charts\[key].statefulSet

statefulSet configures the pods of the chart's statefulset.

| Field | Type | Required | Description |
| - | - | - | - |
| `labels` | `map[string]string` | No | labels are added to the workload's pods. |

## Vantage.spec.workloads.serviceAccounts

serviceAccounts overrides spec.serviceAccountName for specific workloads.

| Field | Type | Required | Description |
| - | - | - | - |
| `charts` | `map[string]object` | No | charts maps chart names to the service accounts used by that chart's workloads. Workloads without an entry use spec.serviceAccountName. See [`charts`](#vantagespecworkloadsserviceaccountschartskey). |

## Vantage.spec.workloads.serviceAccounts.charts\[key]

ChartServiceAccountsConfig defines configuration for service accounts for workloads within a single Vantage Helm chart.

| Field | Type | Required | Description |
| - | - | - | - |
| `deployment` | `object` | No | deployment configures the service account used by the chart's deployment. See [`deployment`](#vantagespecworkloadsserviceaccountschartskeydeployment). |
| `migrator` | `object` | No | migrator configures the service account used by the chart's migrator job. See [`migrator`](#vantagespecworkloadsserviceaccountschartskeymigrator). |
| `statefulSet` | `object` | No | statefulSet configures the service account used by the chart's statefulset. See [`statefulSet`](#vantagespecworkloadsserviceaccountschartskeystatefulset). |

## Vantage.spec.workloads.serviceAccounts.charts\[key].deployment

deployment configures the service account used by the chart's deployment.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | name of the service account Minimum length: `1` · Maximum length: `253` · Pattern: `^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$`. |

## Vantage.spec.workloads.serviceAccounts.charts\[key].migrator

migrator configures the service account used by the chart's migrator job.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | name of the service account Minimum length: `1` · Maximum length: `253` · Pattern: `^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$`. |

## Vantage.spec.workloads.serviceAccounts.charts\[key].statefulSet

statefulSet configures the service account used by the chart's statefulset.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | name of the service account Minimum length: `1` · Maximum length: `253` · Pattern: `^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$`. |

## Vantage.spec.argocd

argocd configures the Argo CD resources the operator creates to install Vantage workloads.
Omit it to install into the "default" project.

| Field | Type | Required | Description |
| - | - | - | - |
| `namespace` | `string` | No | namespace is the namespace Argo CD is installed in, where the operator creates the ApplicationSet and Argo CD creates the Applications. It cannot be changed after it is set. Default: `argocd` · Minimum length: `1`. |
| `project` | `string` | No | project is the Argo CD AppProject the generated Applications belong to. The project must permit the destination cluster and namespace, otherwise Argo CD refuses to sync them. Default: `default` · Minimum length: `1`. |

> [!NOTE]
>
> **`namespace` validation**: `self == oldSelf`: namespace is immutable

## Vantage.spec.keda

keda configures KEDA settings. If not specified, KEDA support will be disabled.

| Field | Type | Required | Description |
| - | - | - | - |
| `enabled` | `boolean` | No | enabled controls whether KEDA-based autoscaling should be used for workloads that support it. Default: `false`. |

## Vantage.spec.ociMigration

ociMigration configures copying artifacts from a source registry to a destintion before install.
Omit entirely or set enabled=false to skip migration.
When enabled, destination is required.

| Field | Type | Required | Description |
| - | - | - | - |
| `concurrency` | `integer` | Yes | concurrency is the number of artifacts to copy in parallel. Default: `5` · Minimum: `1`. |
| `destination` | `object` | No | destination is where artifacts are copied to. See [`destination`](#vantagespecocimigrationdestination). |
| `enabled` | `boolean` | No | enabled enables OCI migration. Default: `true`. |
| `imagePullSecrets` | `[]object` | No | imagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling the operator image which is used to run the OCI migration job in this namespace. See [`imagePullSecrets`](#vantagespecocimigrationimagepullsecretsindex). |
| `labels` | `map[string]JSON` | No | labels is the set of of labels that should be applied to the OCI migration job and pod template. Non-string values will be converted to strings with \[fmt.Sprint] |
| `resources` | `object` | No | resources are the compute resources of the OCI migration job's container. The default leaves CPU unlimited so the copy can burst; set a CPU limit on clusters whose policies require one on every container. Only requests and limits are honoured: the job declares no pod-level resourceClaims, so claims are rejected. Default: `{"limits":{"memory":"512Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}`. See [`resources`](#vantagespecocimigrationresources). |
| `serviceAccountName` | `string` | No | serviceAccountName is the name of the ServiceAccount to use to run the OCI migration job. |
| `sources` | `[]object` | No | sources are credentials for accessing registries where artifacts are copied from (e.g., JFrog). (Max length 20) Maximum items: `20`. See [`sources`](#vantagespecocimigrationsourcesindex). |

> [!NOTE]
>
> **`destination` validation**: `!self.host.contains('/')`: host must not contain a path — use the repository field for the registry path

> [!NOTE]
>
> **`destination` validation**: `!self.host.contains('://')`: host must not include a scheme (e.g., https\://)

> [!NOTE]
>
> **`resources` validation**: `!has(self.claims) || size(self.claims) == 0`: resources.claims is not supported by the OCI migration job

## Vantage.spec.ociMigration.destination

destination is where artifacts are copied to.

| Field | Type | Required | Description |
| - | - | - | - |
| `host` | `string` | Yes | host is the registry hostname and optional port (e.g., registry.example.com, registry.example.com:5000) Minimum length: `1`. |
| `credentialsRef` | `object` | No | credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified. See [`credentialsRef`](#vantagespecocimigrationdestinationcredentialsref). |
| `password` | `string` | No | password for registry authentication (plaintext, use credentialsRef for production) |
| `repository` | `string` | No | repository is the registry path/namespace for artifacts (e.g., "abbyy-docker", "vantage/images") Pattern: `^[a-z0-9]+([._-][a-z0-9]+)*(/[a-z0-9]+([._-][a-z0-9]+)*)*$`. |
| `username` | `string` | No | username for registry authentication (plaintext, use credentialsRef for production) |
| `workloadIdentity` | `object` | No | workloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry. See [`workloadIdentity`](#vantagespecocimigrationdestinationworkloadidentity). |

## Vantage.spec.ociMigration.destination.credentialsRef

credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret.
Takes precedence over username/password if specified.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | name is the name of the Secret |

## Vantage.spec.ociMigration.destination.workloadIdentity

workloadIdentity defines settings for using the identity of the workload (Kubernetes service account)
to access the registry.

| Field | Type | Required | Description |
| - | - | - | - |
| `audience` | `string` | No | audience is the endpoint that should be used to exchange the service acccount token for an OAuth access token. |
| `clientId` | `string` | No | clientId is the client ID that should be used to exchange the service acccount token for an OAuth access token. |
| `tokenEndpoint` | `string` | No | tokenEndpoint is the endpoint that should be used to exchange the service acccount token for an OAuth access token. |

## Vantage.spec.ociMigration.imagePullSecrets\[index]

LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | No | Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: [https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names) Default: \`\`. |

## Vantage.spec.ociMigration.resources

resources are the compute resources of the OCI migration job's container. The default leaves
CPU unlimited so the copy can burst; set a CPU limit on clusters whose policies require one on
every container. Only requests and limits are honoured: the job declares no pod-level
resourceClaims, so claims are rejected.

| Field | Type | Required | Description |
| - | - | - | - |
| `limits` | `map[string]intorstring` | No | Limits describes the maximum amount of compute resources allowed. More info: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) |
| `requests` | `map[string]intorstring` | No | Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) |

Not yet supported. The operator rejects a resource that sets these fields.

| Field | Type | Required | Description |
| - | - | - | - |
| `claims` | `[]object` | No | Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. See [`claims`](#vantagespecocimigrationresourcesclaimsindex). |

## Vantage.spec.ociMigration.resources.claims\[index]

ResourceClaim references one entry in PodSpec.ResourceClaims.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. |
| `request` | `string` | No | Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request. |

## Vantage.spec.ociMigration.sources\[index]

ContainerRegistryConfig defines container registry connection settings.

| Field | Type | Required | Description |
| - | - | - | - |
| `host` | `string` | Yes | host is the registry hostname and optional port (e.g., registry.example.com, registry.example.com:5000) Minimum length: `1`. |
| `credentialsRef` | `object` | No | credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified. See [`credentialsRef`](#vantagespecocimigrationsourcesindexcredentialsref). |
| `password` | `string` | No | password for registry authentication (plaintext, use credentialsRef for production) |
| `repository` | `string` | No | repository is the registry path/namespace for artifacts (e.g., "abbyy-docker", "vantage/images") Pattern: `^[a-z0-9]+([._-][a-z0-9]+)*(/[a-z0-9]+([._-][a-z0-9]+)*)*$`. |
| `username` | `string` | No | username for registry authentication (plaintext, use credentialsRef for production) |
| `workloadIdentity` | `object` | No | workloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry. See [`workloadIdentity`](#vantagespecocimigrationsourcesindexworkloadidentity). |

## Vantage.spec.ociMigration.sources\[index].credentialsRef

credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret.
Takes precedence over username/password if specified.

| Field | Type | Required | Description |
| - | - | - | - |
| `name` | `string` | Yes | name is the name of the Secret |

## Vantage.spec.ociMigration.sources\[index].workloadIdentity

workloadIdentity defines settings for using the identity of the workload (Kubernetes service account)
to access the registry.

| Field | Type | Required | Description |
| - | - | - | - |
| `audience` | `string` | No | audience is the endpoint that should be used to exchange the service acccount token for an OAuth access token. |
| `clientId` | `string` | No | clientId is the client ID that should be used to exchange the service acccount token for an OAuth access token. |
| `tokenEndpoint` | `string` | No | tokenEndpoint is the endpoint that should be used to exchange the service acccount token for an OAuth access token. |

## Vantage.spec.smtp

smtp configures the SMTP mail server. If not specified, Sendgrid will be used as mail provider.

| Field | Type | Required | Description |
| - | - | - | - |
| `host` | `string` | Yes | host is the SMTP server hostname |
| `login` | `string` | No | login for SMTP authentication |
| `password` | `string` | No | password for SMTP authentication |
| `port` | `integer` | No | port is the SMTP server port Default: `587` · Format: `int32`. |
| `useSSL` | `boolean` | No | useSSL enables TLS for SMTP connections Default: `false`. |

## Vantage.spec.storage

storage configures advanced storage options.

| Field | Type | Required | Description |
| - | - | - | - |
| `azure` | `object` | No | azure configures Azure storage backend. |
| `custom` | `object` | No | custom configures custom storage backend. See [`custom`](#vantagespecstoragecustom). |

Not yet supported. The operator rejects a resource that sets these fields.

| Field | Type | Required | Description |
| - | - | - | - |
| `s3` | `object` | No | s3 configures S3 storage backend. See [`s3`](#vantagespecstorages3). |

## Vantage.spec.storage.custom

custom configures custom storage backend.

| Field | Type | Required | Description |
| - | - | - | - |
| `size` | `intorstring` | Yes | size defines the size of the PVC. Default: `300Gi` · Pattern: `^(\+\|-)?(([0-9]+(\.[0-9]*)?)\|(\.[0-9]+))(([KMGTPE]i)\|[numkMGTPE]\|([eE](\+\|-)?(([0-9]+(\.[0-9]*)?)\|(\.[0-9]+))))?$`. |
| `storageClass` | `string` | Yes | storageClass defines the storage class to use for PVCs to mount custom storage backend volumes. |

## Vantage.spec.storage.s3

s3 configures S3 storage backend.

| Field | Type | Required | Description |
| - | - | - | - |
| `buckets` | `object` | No | buckets configures storage bucket names. See [`buckets`](#vantagespecstorages3buckets). |
| `region` | `string` | No | region configures the AWS region to use for S3 clients |
| `scopedClientCredentials` | `object` | No | scopedClientCredentials configures the storage service to hand clients short-lived credentials scoped to a single storage (STS AssumeRole) instead of its own keyless connection. See [`scopedClientCredentials`](#vantagespecstorages3scopedclientcredentials). |
| `uri` | `string` | No | uri configures the S3 endpoint (e.g. [https://s3.us-east-1.amazonaws.com](https://s3.us-east-1.amazonaws.com) or an S3-compatible service). Pattern: `^https?://`. |

## Vantage.spec.storage.s3.buckets

buckets configures storage bucket names

| Field | Type | Required | Description |
| - | - | - | - |
| `archive` | `string` | No | archive configures the name of the Archive bucket. |
| `permanent` | `string` | No | permanent configures the name of the Permanent bucket. |
| `standard` | `string` | No | standard configures the name of the Standard bucket. |
| `temporary` | `string` | No | temporary configures the name of the Temporary bucket |

## Vantage.spec.storage.s3.scopedClientCredentials

scopedClientCredentials configures the storage service to hand clients short-lived credentials
scoped to a single storage (STS AssumeRole) instead of its own keyless connection.

| Field | Type | Required | Description |
| - | - | - | - |
| `credentialsExpiration` | `string` | No | credentialsExpiration is the lifetime of each set of credentials, as a .NET TimeSpan (e.g. 01:00:00). Defaults to one hour. Pattern: `^([0-9]+\.)?[0-9]{1,2}:[0-9]{2}:[0-9]{2}$`. |
| `enabled` | `boolean` | No | enabled turns scoped client credentials on. |
| `roleArn` | `string` | No | roleArn is the IAM role assumed to mint the credentials. Required on AWS. |
| `roleSessionName` | `string` | No | roleSessionName is the session name used when assuming roleArn. |
| `stsUri` | `string` | No | stsUri overrides the STS endpoint, which is otherwise resolved from region. Pattern: `^https?://`. |

## Vantage.spec.techcore

techcore contains configuration for the TechCore processing engine

| Field | Type | Required | Description |
| - | - | - | - |
| `versions` | `[]integer` | Yes | versions are the TechCore versions to deploy (available versions are 2, 3, 4). Minimum items: `1` · Enum: `2, 3, 4`. |
| `nnTrainingWorkers` | `object` | No | nnTrainingWorkers configures neural network training workers. See [`nnTrainingWorkers`](#vantagespectechcorenntrainingworkers). |
| `workers` | `object` | No | workers tunes the TechCore worker deployments and their autoscaling. Every field takes effect only when keda.enabled is true, except replicaCount, which also sets the Deployment's replicas. See [`workers`](#vantagespectechcoreworkers). |

## Vantage.spec.techcore.nnTrainingWorkers

nnTrainingWorkers configures neural network training workers

| Field | Type | Required | Description |
| - | - | - | - |
| `enabled` | `boolean` | No | enabled enables neural network training workers Default: `false`. |
| `gpu` | `boolean` | No | gpu enables GPU acceleration for training workers Default: `false`. |

## Vantage.spec.techcore.workers

workers tunes the TechCore worker deployments and their autoscaling. Every field takes effect
only when keda.enabled is true, except replicaCount, which also sets the Deployment's replicas.

| Field | Type | Required | Description |
| - | - | - | - |
| `defaults` | `object` | No | defaults applies to every TechCore worker of every deployed version. See [`defaults`](#vantagespectechcoreworkersdefaults). |
| `overrides` | `map[string]object` | No | overrides applies to one worker type, merged over defaults, across every deployed TechCore version. Keys are worker types without the version prefix, e.g. "ocr", "extraction", "classification-training". A key matching no deployed worker has no effect. See [`overrides`](#vantagespectechcoreworkersoverrideskey). |

## Vantage.spec.techcore.workers.defaults

defaults applies to every TechCore worker of every deployed version.

| Field | Type | Required | Description |
| - | - | - | - |
| `kedaActiveThreadsThreshold` | `integer` | No | kedaActiveThreadsThreshold is the number of free workers to keep available. Defaults to 1. Minimum: `1`. |
| `kedaThreshold` | `integer` | No | kedaThreshold is the queue length per replica that triggers scaling up. Lower scales sooner. Defaults to 5. Minimum: `1`. |
| `maxReplicaCount` | `integer` | No | maxReplicaCount is the ceiling autoscaling scales up to. The worker charts default to 20 on a minimal install, and each can set its own figure for a full one. Minimum: `1`. |
| `replicaCount` | `integer` | No | replicaCount is the number of workers kept running before any load arrives, and the floor autoscaling scales up from. Needs keda.enabled. The worker charts default to 1 on a minimal install, and each can set its own figure for a full one. Use scaling.scaleInactiveToZero to let a worker go to none: a replicaCount of 0 is read as unset on a minimal install and as zero on a full one. Minimum: `1`. |
| `resources` | `object` | No | resources sets what one worker is given. These are the per-worker figures the totals in the sizing guide are built from, so changing them changes what the installation needs. See [`resources`](#vantagespectechcoreworkersdefaultsresources). |
| `scaleDownStabilizationWindowSecs` | `integer` | No | scaleDownStabilizationWindowSecs is how long load must stay low before replicas are removed. Defaults to 300. Minimum: `0`. |
| `scaleUpPolicyPodsCount` | `integer` | No | scaleUpPolicyPodsCount is how many replicas may be added every 30 seconds. Defaults to 15. Minimum: `1`. |
| `scaling` | `object` | No | scaling configures autoscaling behaviour that has no effect without keda.enabled. See [`scaling`](#vantagespectechcoreworkersdefaultsscaling). |

## Vantage.spec.techcore.workers.defaults.resources

resources sets what one worker is given. These are the per-worker figures the totals in the
sizing guide are built from, so changing them changes what the installation needs.

| Field | Type | Required | Description |
| - | - | - | - |
| `cpu` | `integer` | No | cpu is the CPU limit, in cores. The request is derived from it, at 90% or one core less, whichever is higher. Most workers default to 1; the training workers default to more. Minimum: `1`. |
| `gpu` | `integer` | No | gpu is the number of GPUs, set as both request and limit. Needs GPU nodes the worker can be scheduled onto. Minimum: `1`. |
| `memoryGB` | `integer` | No | memoryGB is the memory limit, in GiB. Workers vary; OCR defaults to 8. Minimum: `1`. |
| `memoryRequestGB` | `integer` | No | memoryRequestGB is the memory request, in GiB. Left unset it is 0.9 of memoryGB, unless the worker chart ships a request of its own, which is then used as-is and does not follow memoryGB. Set it whenever memoryGB is set to something other than the worker's default. Minimum: `1`. |

## Vantage.spec.techcore.workers.defaults.scaling

scaling configures autoscaling behaviour that has no effect without keda.enabled.

| Field | Type | Required | Description |
| - | - | - | - |
| `cooldown` | `integer` | No | cooldown is how long a worker stays up after its queue empties, in seconds. Defaults to 300. Minimum: `0`. |
| `cron` | `object` | No | cron keeps workers warm during working hours and lets them scale to zero outside them. Needs scaleInactiveToZero, and has no effect on workers serving only the low priority queue. See [`cron`](#vantagespectechcoreworkersdefaultsscalingcron). |
| `growRate` | `string` | No | growRate scales replicas ahead of current demand, as a multiplier of the workers busy over the last five minutes. Values at or below 1 disable it. Defaults to 1.3 for high priority workers and off for the rest. Pattern: `^[0-9]+(\.[0-9]+)?$`. |
| `scaleInactiveToZero` | `boolean` | No | scaleInactiveToZero removes every replica of an idle worker, trading a cold start on the next document for the cores in between. |

## Vantage.spec.techcore.workers.defaults.scaling.cron

cron keeps workers warm during working hours and lets them scale to zero outside them. Needs
scaleInactiveToZero, and has no effect on workers serving only the low priority queue.

| Field | Type | Required | Description |
| - | - | - | - |
| `dayEnd` | `string` | No | dayEnd is when workers may scale back to zero, in cron format. Defaults to "0 22 \* \* 1-5". |
| `dayStart` | `string` | No | dayStart is when workers are brought up, in cron format. Defaults to "0 7 \* \* 1-5". |
| `timezone` | `string` | No | timezone the hours below are expressed in, as an IANA name, e.g. "America/New\_York". Required once defaults and any override have been merged; it may be omitted here and inherited. |

## Vantage.spec.techcore.workers.overrides\[key]

WorkerConfig defines the tunable settings of a TechCore worker. Unset fields leave the worker
chart's own default in place.

| Field | Type | Required | Description |
| - | - | - | - |
| `kedaActiveThreadsThreshold` | `integer` | No | kedaActiveThreadsThreshold is the number of free workers to keep available. Defaults to 1. Minimum: `1`. |
| `kedaThreshold` | `integer` | No | kedaThreshold is the queue length per replica that triggers scaling up. Lower scales sooner. Defaults to 5. Minimum: `1`. |
| `maxReplicaCount` | `integer` | No | maxReplicaCount is the ceiling autoscaling scales up to. The worker charts default to 20 on a minimal install, and each can set its own figure for a full one. Minimum: `1`. |
| `replicaCount` | `integer` | No | replicaCount is the number of workers kept running before any load arrives, and the floor autoscaling scales up from. Needs keda.enabled. The worker charts default to 1 on a minimal install, and each can set its own figure for a full one. Use scaling.scaleInactiveToZero to let a worker go to none: a replicaCount of 0 is read as unset on a minimal install and as zero on a full one. Minimum: `1`. |
| `resources` | `object` | No | resources sets what one worker is given. These are the per-worker figures the totals in the sizing guide are built from, so changing them changes what the installation needs. See [`resources`](#vantagespectechcoreworkersoverrideskeyresources). |
| `scaleDownStabilizationWindowSecs` | `integer` | No | scaleDownStabilizationWindowSecs is how long load must stay low before replicas are removed. Defaults to 300. Minimum: `0`. |
| `scaleUpPolicyPodsCount` | `integer` | No | scaleUpPolicyPodsCount is how many replicas may be added every 30 seconds. Defaults to 15. Minimum: `1`. |
| `scaling` | `object` | No | scaling configures autoscaling behaviour that has no effect without keda.enabled. See [`scaling`](#vantagespectechcoreworkersoverrideskeyscaling). |

## Vantage.spec.techcore.workers.overrides\[key].resources

resources sets what one worker is given. These are the per-worker figures the totals in the
sizing guide are built from, so changing them changes what the installation needs.

| Field | Type | Required | Description |
| - | - | - | - |
| `cpu` | `integer` | No | cpu is the CPU limit, in cores. The request is derived from it, at 90% or one core less, whichever is higher. Most workers default to 1; the training workers default to more. Minimum: `1`. |
| `gpu` | `integer` | No | gpu is the number of GPUs, set as both request and limit. Needs GPU nodes the worker can be scheduled onto. Minimum: `1`. |
| `memoryGB` | `integer` | No | memoryGB is the memory limit, in GiB. Workers vary; OCR defaults to 8. Minimum: `1`. |
| `memoryRequestGB` | `integer` | No | memoryRequestGB is the memory request, in GiB. Left unset it is 0.9 of memoryGB, unless the worker chart ships a request of its own, which is then used as-is and does not follow memoryGB. Set it whenever memoryGB is set to something other than the worker's default. Minimum: `1`. |

## Vantage.spec.techcore.workers.overrides\[key].scaling

scaling configures autoscaling behaviour that has no effect without keda.enabled.

| Field | Type | Required | Description |
| - | - | - | - |
| `cooldown` | `integer` | No | cooldown is how long a worker stays up after its queue empties, in seconds. Defaults to 300. Minimum: `0`. |
| `cron` | `object` | No | cron keeps workers warm during working hours and lets them scale to zero outside them. Needs scaleInactiveToZero, and has no effect on workers serving only the low priority queue. See [`cron`](#vantagespectechcoreworkersoverrideskeyscalingcron). |
| `growRate` | `string` | No | growRate scales replicas ahead of current demand, as a multiplier of the workers busy over the last five minutes. Values at or below 1 disable it. Defaults to 1.3 for high priority workers and off for the rest. Pattern: `^[0-9]+(\.[0-9]+)?$`. |
| `scaleInactiveToZero` | `boolean` | No | scaleInactiveToZero removes every replica of an idle worker, trading a cold start on the next document for the cores in between. |

## Vantage.spec.techcore.workers.overrides\[key].scaling.cron

cron keeps workers warm during working hours and lets them scale to zero outside them. Needs
scaleInactiveToZero, and has no effect on workers serving only the low priority queue.

| Field | Type | Required | Description |
| - | - | - | - |
| `dayEnd` | `string` | No | dayEnd is when workers may scale back to zero, in cron format. Defaults to "0 22 \* \* 1-5". |
| `dayStart` | `string` | No | dayStart is when workers are brought up, in cron format. Defaults to "0 7 \* \* 1-5". |
| `timezone` | `string` | No | timezone the hours below are expressed in, as an IANA name, e.g. "America/New\_York". Required once defaults and any override have been merged; it may be omitted here and inherited. |

## Vantage.status

status defines the observed state of Vantage

| Field | Type | Required | Description |
| - | - | - | - |
| `availableVersions` | `[]string` | No | availableVersions is the list of versions available from the release URL. |
| `conditions` | `[]object` | No | conditions represent the current state of the Vantage resource. Each condition has a unique type and reflects the status of a specific aspect of the resource. Standard condition types include: - "Available": the resource is fully functional - "Progressing": the resource is being created or updated - "Degraded": the resource failed to reach or maintain its desired state The status of each condition is one of True, False, or Unknown. See [`conditions`](#vantagestatusconditionsindex). |
| `degradationReasons` | `[]object` | No | degradationReasons represent the reasons for the installation's degraded state. See [`degradationReasons`](#vantagestatusdegradationreasonsindex). |
| `installedVantageVersion` | `string` | No | installedVantageVersion is the version currently running. |
| `observedGeneration` | `integer` | No | observedGeneration is the generation of the spec that has been "processed" by the controller Format: `int64`. |

## Vantage.status.conditions\[index]

Condition contains details for one aspect of the current state of this API Resource.

| Field | Type | Required | Description |
| - | - | - | - |
| `lastTransitionTime` | `string` | Yes | lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. Format: `date-time`. |
| `message` | `string` | Yes | message is a human readable message indicating details about the transition. This may be an empty string. Maximum length: `32768`. |
| `reason` | `string` | Yes | reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. Minimum length: `1` · Maximum length: `1024` · Pattern: `^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$`. |
| `status` | `enum` | Yes | status of the condition, one of True, False, Unknown. Enum: `True, False, Unknown`. |
| `type` | `string` | Yes | type of condition in CamelCase or in foo.example.com/CamelCase. Maximum length: `316` · Pattern: `^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`. |
| `observedGeneration` | `integer` | No | observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions\[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. Format: `int64` · Minimum: `0`. |

## Vantage.status.degradationReasons\[index]

DegradationReason represents a reason why a single component of the installation is degraded.

| Field | Type | Required | Description |
| - | - | - | - |
| `component` | `string` | Yes | component is the part of the installation that is degraded. |
| `message` | `string` | Yes | message is human readable description for the component's degradation. |
| `reason` | `string` | Yes | reason contains a programmatic identifier indicating the reason for the component's degradation. The value should be a CamelCase string. |
