import * as outputs from "../types/output";
export interface AppDedicatedIp {
    /**
     * The ID of the app.
     */
    id: string;
    /**
     * The IP address of the dedicated egress IP.
     */
    ip: string;
    /**
     * The status of the dedicated egress IP: 'UNKNOWN', 'ASSIGNING', 'ASSIGNED', or 'REMOVED'
     */
    status: string;
}
export interface AppSpec {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.AppSpecAlert[];
    databases?: outputs.AppSpecDatabase[];
    /**
     * Describes a domain where the application will be made available.
     */
    domainNames: outputs.AppSpecDomainName[];
    /**
     * @deprecated This attribute has been replaced by `domain` which supports additional functionality.
     */
    domains: string[];
    /**
     * Specification for app egress configurations.
     */
    egresses?: outputs.AppSpecEgress[];
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecEnv[];
    /**
     * A list of the features applied to the app. The default buildpack can be overridden here. List of available buildpacks can be found using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/reference/apps/list-buildpacks/)
     */
    features: string[];
    functions?: outputs.AppSpecFunction[];
    /**
     * Specification for component routing, rewrites, and redirects.
     */
    ingress: outputs.AppSpecIngress;
    jobs?: outputs.AppSpecJob[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * The slug for the DigitalOcean data center region hosting the app.
     */
    region?: string;
    services?: outputs.AppSpecService[];
    staticSites?: outputs.AppSpecStaticSite[];
    workers?: outputs.AppSpecWorker[];
}
export interface AppSpecAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
}
export interface AppSpecDatabase {
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * The name of the MySQL or PostgreSQL database to configure.
     */
    dbName?: string;
    /**
     * The name of the MySQL or PostgreSQL user to configure.
     *
     * This resource supports customized create timeouts. The default timeout is 30 minutes.
     */
    dbUser?: string;
    /**
     * The database engine to use (`MYSQL`, `PG`, `REDIS`, `MONGODB`, `KAFKA`, or `OPENSEARCH`).
     */
    engine?: string;
    /**
     * The name of the component.
     */
    name?: string;
    /**
     * Whether this is a production or dev database.
     */
    production?: boolean;
    /**
     * The version of the database engine.
     */
    version?: string;
}
export interface AppSpecDomainName {
    /**
     * The hostname for the domain.
     */
    name: string;
    /**
     * The domain type, which can be one of the following:
     * - `DEFAULT`: The default .ondigitalocean.app domain assigned to this app.
     * - `PRIMARY`: The primary domain for this app that is displayed as the default in the control panel, used in bindable environment variables, and any other places that reference an app's live URL. Only one domain may be set as primary.
     * - `ALIAS`: A non-primary domain.
     */
    type: string;
    /**
     * A boolean indicating whether the domain includes all sub-domains, in addition to the given domain.
     */
    wildcard: boolean;
    /**
     * If the domain uses DigitalOcean DNS and you would like App Platform to automatically manage it for you, set this to the name of the domain on your account.
     */
    zone?: string;
}
export interface AppSpecEgress {
    /**
     * The app egress type: `AUTOASSIGN`, `DEDICATED_IP`
     */
    type?: string;
}
export interface AppSpecEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecFunction {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.AppSpecFunctionAlert[];
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.AppSpecFunctionBitbucket;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.AppSpecFunctionCors;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecFunctionEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of `git`, `github` or `gitlab` may be set.
     */
    git?: outputs.AppSpecFunctionGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    github?: outputs.AppSpecFunctionGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.AppSpecFunctionGitlab;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.AppSpecFunctionLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An HTTP paths that should be routed to this component.
     *
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.AppSpecFunctionRoute[];
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
}
export interface AppSpecFunctionAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface AppSpecFunctionBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecFunctionCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is `include`. This configures the Access-Control-Allow-Credentials header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.
     */
    allowMethods?: string[];
    /**
     * The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.
     */
    allowOrigins?: outputs.AppSpecFunctionCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface AppSpecFunctionCorsAllowOrigins {
    /**
     * Exact string match.
     */
    exact?: string;
    /**
     * Prefix-based match.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * RE2 style regex-based match.
     */
    regex?: string;
}
export interface AppSpecFunctionEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecFunctionGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface AppSpecFunctionGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecFunctionGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecFunctionLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.AppSpecFunctionLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.AppSpecFunctionLogDestinationLogtail;
    /**
     * Name of the log destination. Minimum length: 2. Maximum length: 42.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.AppSpecFunctionLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.AppSpecFunctionLogDestinationPapertrail;
}
export interface AppSpecFunctionLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * Datadog HTTP log intake endpoint.
     */
    endpoint?: string;
}
export interface AppSpecFunctionLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface AppSpecFunctionLogDestinationOpenSearch {
    /**
     * Basic authentication details.
     */
    basicAuth: outputs.AppSpecFunctionLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch endpoint.
     */
    endpoint?: string;
    /**
     * OpenSearch index name.
     */
    indexName?: string;
}
export interface AppSpecFunctionLogDestinationOpenSearchBasicAuth {
    /**
     * Password for basic authentication.
     */
    password?: string;
    /**
     * user for basic authentication.
     */
    user?: string;
}
export interface AppSpecFunctionLogDestinationPapertrail {
    /**
     * Papertrail syslog endpoint.
     */
    endpoint: string;
}
export interface AppSpecFunctionRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface AppSpecIngress {
    /**
     * Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects.
     */
    rules?: outputs.AppSpecIngressRule[];
}
export interface AppSpecIngressRule {
    /**
     * The component to route to. Only one of `component` or `redirect` may be set.
     */
    component: outputs.AppSpecIngressRuleComponent;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     */
    cors: outputs.AppSpecIngressRuleCors;
    /**
     * The match configuration for the rule
     */
    match: outputs.AppSpecIngressRuleMatch;
    /**
     * The redirect configuration for the rule. Only one of `component` or `redirect` may be set.
     */
    redirect?: outputs.AppSpecIngressRuleRedirect;
}
export interface AppSpecIngressRuleComponent {
    /**
     * The name of the component to route to.
     */
    name: string;
    /**
     * An optional boolean flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component.
     */
    preservePathPrefix: boolean;
    /**
     * An optional field that will rewrite the path of the component to be what is specified here. This is mutually exclusive with `preservePathPrefix`.
     */
    rewrite: string;
}
export interface AppSpecIngressRuleCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is `include`. This configures the `Access-Control-Allow-Credentials` header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
     */
    allowMethods?: string[];
    /**
     * The `Access-Control-Allow-Origin` can be
     */
    allowOrigins?: outputs.AppSpecIngressRuleCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface AppSpecIngressRuleCorsAllowOrigins {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.
     */
    exact?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).
     */
    regex?: string;
}
export interface AppSpecIngressRuleMatch {
    /**
     * The path to match on.
     */
    path: outputs.AppSpecIngressRuleMatchPath;
}
export interface AppSpecIngressRuleMatchPath {
    /**
     * Prefix-based match.
     */
    prefix: string;
}
export interface AppSpecIngressRuleRedirect {
    /**
     * The authority/host to redirect to. This can be a hostname or IP address.
     */
    authority?: string;
    /**
     * The port to redirect to.
     */
    port?: number;
    /**
     * The redirect code to use. Supported values are `300`, `301`, `302`, `303`, `304`, `307`, `308`.
     */
    redirectCode?: number;
    /**
     * The scheme to redirect to. Supported values are `http` or `https`
     */
    scheme?: string;
    /**
     * An optional URI path to redirect to.
     */
    uri?: string;
}
export interface AppSpecJob {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.AppSpecJobAlert[];
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.AppSpecJobBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecJobEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of `git`, `github` or `gitlab` may be set.
     */
    git?: outputs.AppSpecJobGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    github?: outputs.AppSpecJobGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.AppSpecJobGitlab;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    image?: outputs.AppSpecJobImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`
     */
    instanceSizeSlug?: string;
    /**
     * The type of job and when it will be run during the deployment process. It may be one of:
     * - `UNSPECIFIED`: Default job type, will auto-complete to POST_DEPLOY kind.
     * - `PRE_DEPLOY`: Indicates a job that runs before an app deployment.
     * - `POST_DEPLOY`: Indicates a job that runs after an app deployment.
     * - `FAILED_DEPLOY`: Indicates a job that runs after a component fails to deploy.
     */
    kind?: string;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.AppSpecJobLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional run command to override the component's default.
     */
    runCommand?: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.AppSpecJobTermination;
}
export interface AppSpecJobAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface AppSpecJobBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecJobEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecJobGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface AppSpecJobGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecJobGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecJobImage {
    /**
     * Configures automatically deploying images pushed to DOCR.
     */
    deployOnPushes: outputs.AppSpecJobImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `<username>:<token>`.
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface AppSpecJobImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface AppSpecJobLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.AppSpecJobLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.AppSpecJobLogDestinationLogtail;
    /**
     * Name of the log destination. Minimum length: 2. Maximum length: 42.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.AppSpecJobLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.AppSpecJobLogDestinationPapertrail;
}
export interface AppSpecJobLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * Datadog HTTP log intake endpoint.
     */
    endpoint?: string;
}
export interface AppSpecJobLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface AppSpecJobLogDestinationOpenSearch {
    /**
     * Basic authentication details.
     */
    basicAuth: outputs.AppSpecJobLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch endpoint.
     */
    endpoint?: string;
    /**
     * OpenSearch index name.
     */
    indexName?: string;
}
export interface AppSpecJobLogDestinationOpenSearchBasicAuth {
    /**
     * Password for basic authentication.
     */
    password?: string;
    /**
     * user for basic authentication.
     */
    user?: string;
}
export interface AppSpecJobLogDestinationPapertrail {
    /**
     * Papertrail syslog endpoint.
     */
    endpoint: string;
}
export interface AppSpecJobTermination {
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     *
     * A `function` component can contain:
     */
    gracePeriodSeconds?: number;
}
export interface AppSpecService {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.AppSpecServiceAlert[];
    /**
     * Configuration for automatically scaling this component based on metrics.
     */
    autoscaling?: outputs.AppSpecServiceAutoscaling;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.AppSpecServiceBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.AppSpecServiceCors;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecServiceEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of `git`, `github` or `gitlab` may be set.
     */
    git?: outputs.AppSpecServiceGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    github?: outputs.AppSpecServiceGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.AppSpecServiceGitlab;
    /**
     * A health check to determine the availability of this component.
     */
    healthCheck?: outputs.AppSpecServiceHealthCheck;
    /**
     * The internal port on which this service's run command will listen.
     */
    httpPort: number;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    image?: outputs.AppSpecServiceImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`
     */
    instanceSizeSlug?: string;
    /**
     * A list of ports on which this service will listen for internal traffic.
     */
    internalPorts: number[];
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.AppSpecServiceLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An HTTP paths that should be routed to this component.
     *
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.AppSpecServiceRoute[];
    /**
     * An optional run command to override the component's default.
     */
    runCommand: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.AppSpecServiceTermination;
}
export interface AppSpecServiceAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface AppSpecServiceAutoscaling {
    /**
     * The maximum amount of instances for this component. Must be more than min_instance_count.
     */
    maxInstanceCount: number;
    /**
     * The metrics that the component is scaled on.
     */
    metrics: outputs.AppSpecServiceAutoscalingMetrics;
    /**
     * The minimum amount of instances for this component. Must be less than max_instance_count.
     */
    minInstanceCount: number;
}
export interface AppSpecServiceAutoscalingMetrics {
    /**
     * Settings for scaling the component based on CPU utilization.
     */
    cpu?: outputs.AppSpecServiceAutoscalingMetricsCpu;
}
export interface AppSpecServiceAutoscalingMetricsCpu {
    /**
     * The average target CPU utilization for the component.
     */
    percent: number;
}
export interface AppSpecServiceBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecServiceCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is `include`. This configures the Access-Control-Allow-Credentials header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.
     */
    allowMethods?: string[];
    /**
     * The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.
     */
    allowOrigins?: outputs.AppSpecServiceCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface AppSpecServiceCorsAllowOrigins {
    /**
     * Exact string match.
     */
    exact?: string;
    /**
     * Prefix-based match.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * RE2 style regex-based match.
     */
    regex?: string;
}
export interface AppSpecServiceEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecServiceGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface AppSpecServiceGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecServiceGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecServiceHealthCheck {
    /**
     * The number of failed health checks before considered unhealthy.
     */
    failureThreshold?: number;
    /**
     * The route path used for the HTTP health check ping.
     */
    httpPath?: string;
    /**
     * The number of seconds to wait before beginning health checks.
     */
    initialDelaySeconds?: number;
    /**
     * The number of seconds to wait between health checks.
     */
    periodSeconds?: number;
    /**
     * The health check will be performed on this port instead of component's HTTP port.
     */
    port?: number;
    /**
     * The number of successful health checks before considered healthy.
     */
    successThreshold?: number;
    /**
     * The number of seconds after which the check times out.
     */
    timeoutSeconds?: number;
}
export interface AppSpecServiceImage {
    /**
     * Configures automatically deploying images pushed to DOCR.
     */
    deployOnPushes: outputs.AppSpecServiceImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `<username>:<token>`.
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface AppSpecServiceImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface AppSpecServiceLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.AppSpecServiceLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.AppSpecServiceLogDestinationLogtail;
    /**
     * Name of the log destination. Minimum length: 2. Maximum length: 42.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.AppSpecServiceLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.AppSpecServiceLogDestinationPapertrail;
}
export interface AppSpecServiceLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * Datadog HTTP log intake endpoint.
     */
    endpoint?: string;
}
export interface AppSpecServiceLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface AppSpecServiceLogDestinationOpenSearch {
    /**
     * Basic authentication details.
     */
    basicAuth: outputs.AppSpecServiceLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch endpoint.
     */
    endpoint?: string;
    /**
     * OpenSearch index name.
     */
    indexName?: string;
}
export interface AppSpecServiceLogDestinationOpenSearchBasicAuth {
    /**
     * Password for basic authentication.
     */
    password?: string;
    /**
     * user for basic authentication.
     */
    user?: string;
}
export interface AppSpecServiceLogDestinationPapertrail {
    /**
     * Papertrail syslog endpoint.
     */
    endpoint: string;
}
export interface AppSpecServiceRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface AppSpecServiceTermination {
    /**
     * The number of seconds to wait between selecting a container instance for termination and issuing the TERM signal. Selecting a container instance for termination begins an asynchronous drain of new requests on upstream load-balancers. Default: 15 seconds, Minimum 1, Maximum 110.
     *
     * A `staticSite` can contain:
     */
    drainSeconds?: number;
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     *
     * A `function` component can contain:
     */
    gracePeriodSeconds?: number;
}
export interface AppSpecStaticSite {
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.AppSpecStaticSiteBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The name of the document to use as the fallback for any requests to documents that are not found when serving this static site.
     */
    catchallDocument?: string;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.AppSpecStaticSiteCors;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecStaticSiteEnv[];
    /**
     * The name of the error document to use when serving this static site.
     */
    errorDocument?: string;
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of `git`, `github` or `gitlab` may be set.
     */
    git?: outputs.AppSpecStaticSiteGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    github?: outputs.AppSpecStaticSiteGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.AppSpecStaticSiteGitlab;
    /**
     * The name of the index document to use when serving this static site.
     */
    indexDocument?: string;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: `_static`, `dist`, `public`.
     */
    outputDir?: string;
    /**
     * An HTTP paths that should be routed to this component.
     *
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.AppSpecStaticSiteRoute[];
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
}
export interface AppSpecStaticSiteBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecStaticSiteCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is `include`. This configures the Access-Control-Allow-Credentials header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.
     */
    allowMethods?: string[];
    /**
     * The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.
     */
    allowOrigins?: outputs.AppSpecStaticSiteCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface AppSpecStaticSiteCorsAllowOrigins {
    /**
     * Exact string match.
     */
    exact?: string;
    /**
     * Prefix-based match.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * RE2 style regex-based match.
     */
    regex?: string;
}
export interface AppSpecStaticSiteEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecStaticSiteGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface AppSpecStaticSiteGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecStaticSiteGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecStaticSiteRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface AppSpecWorker {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.AppSpecWorkerAlert[];
    /**
     * Configuration for automatically scaling this component based on metrics.
     */
    autoscaling?: outputs.AppSpecWorkerAutoscaling;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.AppSpecWorkerBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.AppSpecWorkerEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of `git`, `github` or `gitlab` may be set.
     */
    git?: outputs.AppSpecWorkerGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    github?: outputs.AppSpecWorkerGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.AppSpecWorkerGitlab;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `gitlab`, or `image` may be set.
     */
    image?: outputs.AppSpecWorkerImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`
     */
    instanceSizeSlug?: string;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.AppSpecWorkerLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional run command to override the component's default.
     */
    runCommand?: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.AppSpecWorkerTermination;
}
export interface AppSpecWorkerAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface AppSpecWorkerAutoscaling {
    /**
     * The maximum amount of instances for this component. Must be more than min_instance_count.
     */
    maxInstanceCount: number;
    /**
     * The metrics that the component is scaled on.
     */
    metrics: outputs.AppSpecWorkerAutoscalingMetrics;
    /**
     * The minimum amount of instances for this component. Must be less than max_instance_count.
     */
    minInstanceCount: number;
}
export interface AppSpecWorkerAutoscalingMetrics {
    /**
     * Settings for scaling the component based on CPU utilization.
     */
    cpu?: outputs.AppSpecWorkerAutoscalingMetricsCpu;
}
export interface AppSpecWorkerAutoscalingMetricsCpu {
    /**
     * The average target CPU utilization for the component.
     */
    percent: number;
}
export interface AppSpecWorkerBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecWorkerEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The value of the environment variable.
     */
    value?: string;
}
export interface AppSpecWorkerGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface AppSpecWorkerGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecWorkerGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface AppSpecWorkerImage {
    /**
     * Configures automatically deploying images pushed to DOCR.
     */
    deployOnPushes: outputs.AppSpecWorkerImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `<username>:<token>`.
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface AppSpecWorkerImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface AppSpecWorkerLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.AppSpecWorkerLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.AppSpecWorkerLogDestinationLogtail;
    /**
     * Name of the log destination. Minimum length: 2. Maximum length: 42.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.AppSpecWorkerLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.AppSpecWorkerLogDestinationPapertrail;
}
export interface AppSpecWorkerLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * Datadog HTTP log intake endpoint.
     */
    endpoint?: string;
}
export interface AppSpecWorkerLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface AppSpecWorkerLogDestinationOpenSearch {
    /**
     * Basic authentication details.
     */
    basicAuth: outputs.AppSpecWorkerLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch endpoint.
     */
    endpoint?: string;
    /**
     * OpenSearch index name.
     */
    indexName?: string;
}
export interface AppSpecWorkerLogDestinationOpenSearchBasicAuth {
    /**
     * Password for basic authentication.
     */
    password?: string;
    /**
     * user for basic authentication.
     */
    user?: string;
}
export interface AppSpecWorkerLogDestinationPapertrail {
    /**
     * Papertrail syslog endpoint.
     */
    endpoint: string;
}
export interface AppSpecWorkerTermination {
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     *
     * A `function` component can contain:
     */
    gracePeriodSeconds?: number;
}
export interface DatabaseClusterBackupRestore {
    /**
     * The timestamp of an existing database cluster backup in ISO8601 combined date and time format. The most recent backup will be used if excluded.
     *
     * This resource supports customized create timeouts. The default timeout is 30 minutes.
     */
    backupCreatedAt?: string;
    /**
     * The name of an existing database cluster from which the backup will be restored.
     */
    databaseName: string;
}
export interface DatabaseClusterMaintenanceWindow {
    /**
     * The day of the week on which to apply maintenance updates. May be one of `monday` through `sunday`.
     */
    day: string;
    /**
     * The hour in UTC at which maintenance updates will be applied as a string in 24 hour format, e.g. `13:00`.
     */
    hour: string;
}
export interface DatabaseFirewallRule {
    /**
     * The date and time when the firewall rule was created.
     */
    createdAt: string;
    /**
     * The type of resource that the firewall rule allows to access the database cluster. The possible values are: `droplet`, `k8s`, `ipAddr`, `tag`, or `app`.
     */
    type: string;
    /**
     * A unique identifier for the firewall rule.
     */
    uuid: string;
    /**
     * The ID of the specific resource, the name of a tag applied to a group of resources, or the IP address that the firewall rule allows to access the database cluster.
     */
    value: string;
}
export interface DatabaseKafkaTopicConfig {
    /**
     * The topic cleanup policy that describes whether messages should be deleted, compacted, or both when retention policies are violated.
     * This may be one of "delete", "compact", or "compactDelete".
     */
    cleanupPolicy: string;
    /**
     * The topic compression codecs used for a given topic.
     * This may be one of "uncompressed", "gzip", "snappy", "lz4", "producer", "zstd". "uncompressed" indicates that there is no compression and "producer" retains the original compression codec set by the producer.
     */
    compressionType: string;
    /**
     * The amount of time, in ms, that deleted records are retained.
     */
    deleteRetentionMs: string;
    /**
     * The amount of time, in ms, to wait before deleting a topic log segment from the filesystem.
     */
    fileDeleteDelayMs: string;
    /**
     * The number of messages accumulated on a topic partition before they are flushed to disk.
     */
    flushMessages: string;
    /**
     * The maximum time, in ms, that a topic is kept in memory before being flushed to disk.
     */
    flushMs: string;
    /**
     * The interval, in bytes, in which entries are added to the offset index.
     */
    indexIntervalBytes: string;
    /**
     * The maximum time, in ms, that a particular message will remain uncompacted. This will not apply if the `compressionType` is set to "uncompressed" or it is set to `producer` and the producer is not using compression.
     */
    maxCompactionLagMs: string;
    /**
     * The maximum size, in bytes, of a message.
     */
    maxMessageBytes: string;
    /**
     * Determines whether down-conversion of message formats for consumers is enabled.
     */
    messageDownConversionEnable: boolean;
    /**
     * The version of the inter-broker protocol that will be used. This may be one of "0.8.0", "0.8.1", "0.8.2", "0.9.0", "0.10.0", "0.10.0-IV0", "0.10.0-IV1", "0.10.1", "0.10.1-IV0", "0.10.1-IV1", "0.10.1-IV2", "0.10.2", "0.10.2-IV0", "0.11.0", "0.11.0-IV0", "0.11.0-IV1", "0.11.0-IV2", "1.0", "1.0-IV0", "1.1", "1.1-IV0", "2.0", "2.0-IV0", "2.0-IV1", "2.1", "2.1-IV0", "2.1-IV1", "2.1-IV2", "2.2", "2.2-IV0", "2.2-IV1", "2.3", "2.3-IV0", "2.3-IV1", "2.4", "2.4-IV0", "2.4-IV1", "2.5", "2.5-IV0", "2.6", "2.6-IV0", "2.7", "2.7-IV0", "2.7-IV1", "2.7-IV2", "2.8", "2.8-IV0", "2.8-IV1", "3.0", "3.0-IV0", "3.0-IV1", "3.1", "3.1-IV0", "3.2", "3.2-IV0", "3.3", "3.3-IV0", "3.3-IV1", "3.3-IV2", "3.3-IV3", "3.4", "3.4-IV0", "3.5", "3.5-IV0", "3.5-IV1", "3.5-IV2", "3.6", "3.6-IV0", "3.6-IV1", "3.6-IV2".
     */
    messageFormatVersion: string;
    /**
     * The maximum difference, in ms, between the timestamp specific in a message and when the broker receives the message.
     */
    messageTimestampDifferenceMaxMs: string;
    /**
     * Specifies which timestamp to use for the message. This may be one of "createTime" or "logAppendTime".
     */
    messageTimestampType: string;
    /**
     * A scale between 0.0 and 1.0 which controls the frequency of the compactor. Larger values mean more frequent compactions. This is often paired with `maxCompactionLagMs` to control the compactor frequency.
     */
    minCleanableDirtyRatio: number;
    minCompactionLagMs: string;
    /**
     * The number of replicas that must acknowledge a write before it is considered successful. -1 is a special setting to indicate that all nodes must ack a message before a write is considered successful. Default is 1, indicating at least 1 replica must acknowledge a write to be considered successful.
     */
    minInsyncReplicas?: number;
    /**
     * Determines whether to preallocate a file on disk when creating a new log segment within a topic.
     */
    preallocate: boolean;
    /**
     * The maximum size, in bytes, of a topic before messages are deleted. -1 is a special setting indicating that this setting has no limit.
     */
    retentionBytes: string;
    /**
     * The maximum time, in ms, that a topic log file is retained before deleting it. -1 is a special setting indicating that this setting has no limit.
     */
    retentionMs: string;
    /**
     * The maximum size, in bytes, of a single topic log file.
     */
    segmentBytes: string;
    /**
     * The maximum size, in bytes, of the offset index.
     */
    segmentIndexBytes: string;
    /**
     * The maximum time, in ms, subtracted from the scheduled segment disk flush time to avoid the thundering herd problem for segment flushing.
     */
    segmentJitterMs: string;
    /**
     * The maximum time, in ms, before the topic log will flush to disk.
     */
    segmentMs: string;
}
export interface DatabasePostgresqlConfigPgbouncer {
    autodbIdleTimeout: number;
    autodbMaxDbConnections: number;
    autodbPoolMode: string;
    autodbPoolSize: number;
    ignoreStartupParameters: string[];
    minPoolSize: number;
    serverIdleTimeout: number;
    serverLifetime: number;
    serverResetQueryAlways: boolean;
}
export interface DatabasePostgresqlConfigTimescaledb {
    maxBackgroundWorkers?: number;
}
export interface DatabaseUserSetting {
    /**
     * A set of ACLs (Access Control Lists) specifying permission on topics with a Kafka cluster. The properties of an individual ACL are described below:
     *
     * An individual ACL includes the following:
     */
    acls?: outputs.DatabaseUserSettingAcl[];
    opensearchAcls?: outputs.DatabaseUserSettingOpensearchAcl[];
}
export interface DatabaseUserSettingAcl {
    /**
     * An identifier for the ACL, this will be automatically assigned when you create an ACL entry
     */
    id: string;
    /**
     * The permission level applied to the ACL. This includes "admin", "consume", "produce", and "produceconsume". "admin" allows for producing and consuming as well as add/delete/update permission for topics. "consume" allows only for reading topic messages. "produce" allows only for writing topic messages. "produceconsume" allows for both reading and writing topic messages.
     */
    permission: string;
    /**
     * A regex for matching the topic(s) that this ACL should apply to. The regex can assume one of 3 patterns: "*", "<prefix>*", or "<literal>". "*" is a special value indicating a wildcard that matches on all topics. "<prefix>*" defines a regex that matches all topics with the prefix. "<literal>" performs an exact match on a topic name and only applies to that topic.
     */
    topic: string;
}
export interface DatabaseUserSettingOpensearchAcl {
    index: string;
    /**
     * The permission level applied to the ACL. This includes "admin", "consume", "produce", and "produceconsume". "admin" allows for producing and consuming as well as add/delete/update permission for topics. "consume" allows only for reading topic messages. "produce" allows only for writing topic messages. "produceconsume" allows for both reading and writing topic messages.
     */
    permission: string;
}
export interface DropletAutoscaleConfig {
    /**
     * The cooldown duration between scaling events for the Droplet Autoscale pool.
     */
    cooldownMinutes?: number;
    /**
     * The maximum number of instances to maintain in the Droplet Autoscale pool.
     */
    maxInstances?: number;
    /**
     * The minimum number of instances to maintain in the Droplet Autoscale pool.
     */
    minInstances?: number;
    /**
     * The target average CPU load (in range `[0, 1]`) to maintain in the Droplet Autoscale pool.
     */
    targetCpuUtilization?: number;
    /**
     * The target average Memory load (in range `[0, 1]`) to maintain in the Droplet Autoscale
     * pool.
     */
    targetMemoryUtilization?: number;
    /**
     * The static number of instances to maintain in the pool Droplet Autoscale pool. This
     * argument cannot be used with any other config options.
     */
    targetNumberInstances?: number;
}
export interface DropletAutoscaleCurrentUtilization {
    /**
     * Average CPU utilization
     */
    cpu: number;
    /**
     * Average Memory utilization
     */
    memory: number;
}
export interface DropletAutoscaleDropletTemplate {
    /**
     * Image slug of the Droplet Autoscale pool underlying resource(s).
     */
    image: string;
    /**
     * Boolean flag to enable IPv6 networking on the Droplet Autoscale pool underlying resource(s).
     */
    ipv6?: boolean;
    /**
     * Project UUID to create the Droplet Autoscale pool underlying resource(s).
     */
    projectId?: string;
    /**
     * Region slug of the Droplet Autoscale pool underlying resource(s).
     */
    region: string;
    /**
     * Size slug of the Droplet Autoscale pool underlying resource(s).
     */
    size: string;
    /**
     * SSH fingerprints to add to the Droplet Autoscale pool underlying resource(s).
     */
    sshKeys: string[];
    /**
     * List of tags to add to the Droplet Autoscale pool underlying resource(s).
     */
    tags?: string[];
    /**
     * Custom user data that can be added to the Droplet Autoscale pool underlying resource(s). This can be a
     * cloud init script that user may configure to setup their application workload.
     */
    userData?: string;
    /**
     * VPC UUID to create the Droplet Autoscale pool underlying resource(s). If not provided, this is inferred
     * from the specified `region` (default VPC).
     */
    vpcUuid?: string;
    /**
     * Boolean flag to enable metric agent on the Droplet Autoscale pool underlying resource(s). The
     * metric agent enables collecting resource utilization metrics, which allows making resource based scaling decisions.
     */
    withDropletAgent?: boolean;
}
export interface DropletBackupPolicy {
    /**
     * The hour of the day that the backup window will start (`0`, `4`, `8`, `12`, `16`, `20`).
     */
    hour?: number;
    /**
     * The backup plan used for the Droplet. The plan can be either `daily` or `weekly`.
     */
    plan?: string;
    /**
     * The day of the week on which the backup will occur (`SUN`, `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`).
     */
    weekday?: string;
}
export interface FirewallInboundRule {
    /**
     * The ports on which traffic will be allowed
     * specified as a string containing a single port, a range (e.g. "8000-9000"),
     * or "1-65535" to open all ports for a protocol. Required for when protocol is
     * `tcp` or `udp`.
     */
    portRange?: string;
    /**
     * The type of traffic to be allowed.
     * This may be one of "tcp", "udp", or "icmp".
     */
    protocol: string;
    /**
     * An array of strings containing the IPv4
     * addresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs from which the
     * inbound traffic will be accepted.
     */
    sourceAddresses?: string[];
    /**
     * An array containing the IDs of
     * the Droplets from which the inbound traffic will be accepted.
     */
    sourceDropletIds?: number[];
    /**
     * An array containing the IDs of
     * the Kubernetes clusters from which the inbound traffic will be accepted.
     */
    sourceKubernetesIds?: string[];
    /**
     * An array containing the IDs
     * of the Load Balancers from which the inbound traffic will be accepted.
     */
    sourceLoadBalancerUids?: string[];
    /**
     * An array containing the names of Tags
     * corresponding to groups of Droplets from which the inbound traffic
     * will be accepted.
     */
    sourceTags?: string[];
}
export interface FirewallOutboundRule {
    /**
     * An array of strings containing the IPv4
     * addresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs to which the
     * outbound traffic will be allowed.
     */
    destinationAddresses?: string[];
    /**
     * An array containing the IDs of
     * the Droplets to which the outbound traffic will be allowed.
     */
    destinationDropletIds?: number[];
    /**
     * An array containing the IDs of
     * the Kubernetes clusters to which the outbound traffic will be allowed.
     */
    destinationKubernetesIds?: string[];
    /**
     * An array containing the IDs
     * of the Load Balancers to which the outbound traffic will be allowed.
     */
    destinationLoadBalancerUids?: string[];
    /**
     * An array containing the names of Tags
     * corresponding to groups of Droplets to which the outbound traffic will
     * be allowed.
     */
    destinationTags?: string[];
    /**
     * The ports on which traffic will be allowed
     * specified as a string containing a single port, a range (e.g. "8000-9000"),
     * or "1-65535" to open all ports for a protocol. Required for when protocol is
     * `tcp` or `udp`.
     */
    portRange?: string;
    /**
     * The type of traffic to be allowed.
     * This may be one of "tcp", "udp", or "icmp".
     */
    protocol: string;
}
export interface FirewallPendingChange {
    dropletId?: number;
    removing?: boolean;
    /**
     * A status string indicating the current state of the Firewall.
     * This can be "waiting", "succeeded", or "failed".
     */
    status?: string;
}
export interface GetAppDedicatedIp {
    /**
     * The ID of the dedicated egress IP.
     */
    id: string;
    /**
     * The IP address of the dedicated egress IP.
     */
    ip: string;
    /**
     * The status of the dedicated egress IP.
     */
    status: string;
}
export interface GetAppSpec {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.GetAppSpecAlert[];
    databases?: outputs.GetAppSpecDatabase[];
    domain: outputs.GetAppSpecDomain[];
    /**
     * @deprecated This attribute has been replaced by `domain` which supports additional functionality.
     */
    domains: string[];
    egresses?: outputs.GetAppSpecEgress[];
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecEnv[];
    /**
     * List of features which is applied to the app
     */
    features: string[];
    functions?: outputs.GetAppSpecFunction[];
    ingress: outputs.GetAppSpecIngress;
    jobs?: outputs.GetAppSpecJob[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * The slug for the DigitalOcean data center region hosting the app
     */
    region?: string;
    services?: outputs.GetAppSpecService[];
    staticSites?: outputs.GetAppSpecStaticSite[];
    workers?: outputs.GetAppSpecWorker[];
}
export interface GetAppSpecAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
}
export interface GetAppSpecDatabase {
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * The name of the MySQL or PostgreSQL database to configure.
     */
    dbName?: string;
    /**
     * The name of the MySQL or PostgreSQL user to configure.
     */
    dbUser?: string;
    /**
     * The database engine to use (`MYSQL`, `PG`, `REDIS`, or `MONGODB`).
     */
    engine?: string;
    /**
     * The name of the component.
     */
    name?: string;
    /**
     * Whether this is a production or dev database.
     */
    production?: boolean;
    /**
     * The version of the database engine.
     */
    version?: string;
}
export interface GetAppSpecDomain {
    /**
     * The name of the component.
     */
    name: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * Indicates whether the domain includes all sub-domains, in addition to the given domain.
     */
    wildcard: boolean;
    /**
     * If the domain uses DigitalOcean DNS and you would like App Platform to automatically manage it for you, set this to the name of the domain on your account.
     */
    zone?: string;
}
export interface GetAppSpecEgress {
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type?: string;
}
export interface GetAppSpecEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecFunction {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.GetAppSpecFunctionAlert[];
    /**
     * A Bitbucket repo to use as component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.GetAppSpecFunctionBitbucket;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.GetAppSpecFunctionCors;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecFunctionEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of `git`, `github` or `gitlab`  may be set.
     */
    git?: outputs.GetAppSpecFunctionGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    github?: outputs.GetAppSpecFunctionGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.GetAppSpecFunctionGitlab;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.GetAppSpecFunctionLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.GetAppSpecFunctionRoute[];
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
}
export interface GetAppSpecFunctionAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface GetAppSpecFunctionBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecFunctionCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is `include`. This configures the `Access-Control-Allow-Credentials` header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
     */
    allowMethods?: string[];
    /**
     * The `Access-Control-Allow-Origin` can be
     */
    allowOrigins?: outputs.GetAppSpecFunctionCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface GetAppSpecFunctionCorsAllowOrigins {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.
     */
    exact?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).
     */
    regex?: string;
}
export interface GetAppSpecFunctionEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecFunctionGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface GetAppSpecFunctionGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecFunctionGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecFunctionLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.GetAppSpecFunctionLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.GetAppSpecFunctionLogDestinationLogtail;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.GetAppSpecFunctionLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.GetAppSpecFunctionLogDestinationPapertrail;
}
export interface GetAppSpecFunctionLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
}
export interface GetAppSpecFunctionLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface GetAppSpecFunctionLogDestinationOpenSearch {
    /**
     * OpenSearch basic auth
     */
    basicAuth: outputs.GetAppSpecFunctionLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
    /**
     * The index name to use for the logs. If not set, the default index name is `logs`.
     */
    indexName?: string;
}
export interface GetAppSpecFunctionLogDestinationOpenSearchBasicAuth {
    /**
     * Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.
     */
    password?: string;
    /**
     * Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when clusterName is set.
     */
    user?: string;
}
export interface GetAppSpecFunctionLogDestinationPapertrail {
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint: string;
}
export interface GetAppSpecFunctionRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface GetAppSpecIngress {
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rules?: outputs.GetAppSpecIngressRule[];
}
export interface GetAppSpecIngressRule {
    component: outputs.GetAppSpecIngressRuleComponent;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     */
    cors: outputs.GetAppSpecIngressRuleCors;
    match: outputs.GetAppSpecIngressRuleMatch;
    redirect?: outputs.GetAppSpecIngressRuleRedirect;
}
export interface GetAppSpecIngressRuleComponent {
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix: boolean;
    rewrite: string;
}
export interface GetAppSpecIngressRuleCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is `include`. This configures the `Access-Control-Allow-Credentials` header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
     */
    allowMethods?: string[];
    /**
     * The `Access-Control-Allow-Origin` can be
     */
    allowOrigins?: outputs.GetAppSpecIngressRuleCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface GetAppSpecIngressRuleCorsAllowOrigins {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.
     */
    exact?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).
     */
    regex?: string;
}
export interface GetAppSpecIngressRuleMatch {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path: outputs.GetAppSpecIngressRuleMatchPath;
}
export interface GetAppSpecIngressRuleMatchPath {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     */
    prefix: string;
}
export interface GetAppSpecIngressRuleRedirect {
    authority?: string;
    port?: number;
    redirectCode?: number;
    scheme?: string;
    uri?: string;
}
export interface GetAppSpecJob {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.GetAppSpecJobAlert[];
    /**
     * A Bitbucket repo to use as component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.GetAppSpecJobBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecJobEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of `git`, `github` or `gitlab`  may be set.
     */
    git?: outputs.GetAppSpecJobGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    github?: outputs.GetAppSpecJobGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.GetAppSpecJobGitlab;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    image?: outputs.GetAppSpecJobImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component.
     */
    instanceSizeSlug?: string;
    /**
     * The type of job and when it will be run during the deployment process. It may be one of:
     * - `UNSPECIFIED`: Default job type, will auto-complete to POST_DEPLOY kind.
     * - `PRE_DEPLOY`: Indicates a job that runs before an app deployment.
     * - `POST_DEPLOY`: Indicates a job that runs after an app deployment.
     * - `FAILED_DEPLOY`: Indicates a job that runs after a component fails to deploy.
     */
    kind?: string;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.GetAppSpecJobLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional run command to override the component's default.
     */
    runCommand?: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.GetAppSpecJobTermination;
}
export interface GetAppSpecJobAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface GetAppSpecJobBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecJobEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecJobGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface GetAppSpecJobGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecJobGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecJobImage {
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPushes: outputs.GetAppSpecJobImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * Access credentials for third-party registries
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface GetAppSpecJobImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface GetAppSpecJobLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.GetAppSpecJobLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.GetAppSpecJobLogDestinationLogtail;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.GetAppSpecJobLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.GetAppSpecJobLogDestinationPapertrail;
}
export interface GetAppSpecJobLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
}
export interface GetAppSpecJobLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface GetAppSpecJobLogDestinationOpenSearch {
    /**
     * OpenSearch basic auth
     */
    basicAuth: outputs.GetAppSpecJobLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
    /**
     * The index name to use for the logs. If not set, the default index name is `logs`.
     */
    indexName?: string;
}
export interface GetAppSpecJobLogDestinationOpenSearchBasicAuth {
    /**
     * Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.
     */
    password?: string;
    /**
     * Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when clusterName is set.
     */
    user?: string;
}
export interface GetAppSpecJobLogDestinationPapertrail {
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint: string;
}
export interface GetAppSpecJobTermination {
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     */
    gracePeriodSeconds?: number;
}
export interface GetAppSpecService {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.GetAppSpecServiceAlert[];
    /**
     * Configuration for automatically scaling this component based on metrics.
     */
    autoscaling?: outputs.GetAppSpecServiceAutoscaling;
    /**
     * A Bitbucket repo to use as component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.GetAppSpecServiceBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.GetAppSpecServiceCors;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecServiceEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of `git`, `github` or `gitlab`  may be set.
     */
    git?: outputs.GetAppSpecServiceGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    github?: outputs.GetAppSpecServiceGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.GetAppSpecServiceGitlab;
    /**
     * A health check to determine the availability of this component.
     */
    healthCheck?: outputs.GetAppSpecServiceHealthCheck;
    /**
     * The internal port on which this service's run command will listen.
     */
    httpPort: number;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    image?: outputs.GetAppSpecServiceImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component.
     */
    instanceSizeSlug?: string;
    /**
     * A list of ports on which this service will listen for internal traffic.
     */
    internalPorts: number[];
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.GetAppSpecServiceLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.GetAppSpecServiceRoute[];
    /**
     * An optional run command to override the component's default.
     */
    runCommand: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.GetAppSpecServiceTermination;
}
export interface GetAppSpecServiceAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface GetAppSpecServiceAutoscaling {
    /**
     * The maximum amount of instances for this component. Must be more than min_instance_count.
     */
    maxInstanceCount: number;
    /**
     * The metrics that the component is scaled on.
     */
    metrics: outputs.GetAppSpecServiceAutoscalingMetrics;
    /**
     * The minimum amount of instances for this component. Must be less than max_instance_count.
     */
    minInstanceCount: number;
}
export interface GetAppSpecServiceAutoscalingMetrics {
    /**
     * Settings for scaling the component based on CPU utilization.
     */
    cpu?: outputs.GetAppSpecServiceAutoscalingMetricsCpu;
}
export interface GetAppSpecServiceAutoscalingMetricsCpu {
    /**
     * The average target CPU utilization for the component.
     */
    percent: number;
}
export interface GetAppSpecServiceBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecServiceCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is `include`. This configures the `Access-Control-Allow-Credentials` header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
     */
    allowMethods?: string[];
    /**
     * The `Access-Control-Allow-Origin` can be
     */
    allowOrigins?: outputs.GetAppSpecServiceCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface GetAppSpecServiceCorsAllowOrigins {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.
     */
    exact?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).
     */
    regex?: string;
}
export interface GetAppSpecServiceEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecServiceGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface GetAppSpecServiceGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecServiceGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecServiceHealthCheck {
    /**
     * The number of failed health checks before considered unhealthy.
     */
    failureThreshold?: number;
    /**
     * The route path used for the HTTP health check ping.
     */
    httpPath?: string;
    /**
     * The number of seconds to wait before beginning health checks.
     */
    initialDelaySeconds?: number;
    /**
     * The number of seconds to wait between health checks.
     */
    periodSeconds?: number;
    /**
     * The port on which the health check will be performed. If not set, the health check will be performed on the component's http_port.
     */
    port?: number;
    /**
     * The number of successful health checks before considered healthy.
     */
    successThreshold?: number;
    /**
     * The number of seconds after which the check times out.
     */
    timeoutSeconds?: number;
}
export interface GetAppSpecServiceImage {
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPushes: outputs.GetAppSpecServiceImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * Access credentials for third-party registries
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface GetAppSpecServiceImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface GetAppSpecServiceLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.GetAppSpecServiceLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.GetAppSpecServiceLogDestinationLogtail;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.GetAppSpecServiceLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.GetAppSpecServiceLogDestinationPapertrail;
}
export interface GetAppSpecServiceLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
}
export interface GetAppSpecServiceLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface GetAppSpecServiceLogDestinationOpenSearch {
    /**
     * OpenSearch basic auth
     */
    basicAuth: outputs.GetAppSpecServiceLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
    /**
     * The index name to use for the logs. If not set, the default index name is `logs`.
     */
    indexName?: string;
}
export interface GetAppSpecServiceLogDestinationOpenSearchBasicAuth {
    /**
     * Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.
     */
    password?: string;
    /**
     * Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when clusterName is set.
     */
    user?: string;
}
export interface GetAppSpecServiceLogDestinationPapertrail {
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint: string;
}
export interface GetAppSpecServiceRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface GetAppSpecServiceTermination {
    /**
     * The number of seconds to wait between selecting a container instance for termination and issuing the TERM signal. Selecting a container instance for termination begins an asynchronous drain of new requests on upstream load-balancers. Default: 15 seconds, Minimum 1, Maximum 110.
     */
    drainSeconds?: number;
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     */
    gracePeriodSeconds?: number;
}
export interface GetAppSpecStaticSite {
    /**
     * A Bitbucket repo to use as component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.GetAppSpecStaticSiteBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The name of the document to use as the fallback for any requests to documents that are not found when serving this static site.
     */
    catchallDocument?: string;
    /**
     * The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.
     *
     * @deprecated Service level CORS rules are deprecated in favor of ingresses
     */
    cors?: outputs.GetAppSpecStaticSiteCors;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecStaticSiteEnv[];
    /**
     * The name of the error document to use when serving this static site.
     */
    errorDocument?: string;
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of `git`, `github` or `gitlab`  may be set.
     */
    git?: outputs.GetAppSpecStaticSiteGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    github?: outputs.GetAppSpecStaticSiteGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.GetAppSpecStaticSiteGitlab;
    /**
     * The name of the index document to use when serving this static site.
     */
    indexDocument?: string;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: `_static`, `dist`, `public`.
     */
    outputDir?: string;
    /**
     * @deprecated Service level routes are deprecated in favor of ingresses
     */
    routes: outputs.GetAppSpecStaticSiteRoute[];
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
}
export interface GetAppSpecStaticSiteBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecStaticSiteCors {
    /**
     * Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is `include`. This configures the `Access-Control-Allow-Credentials` header.
     */
    allowCredentials?: boolean;
    /**
     * The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
     */
    allowHeaders?: string[];
    /**
     * The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
     */
    allowMethods?: string[];
    /**
     * The `Access-Control-Allow-Origin` can be
     */
    allowOrigins?: outputs.GetAppSpecStaticSiteCorsAllowOrigins;
    /**
     * The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.
     */
    exposeHeaders?: string[];
    /**
     * An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: `5h30m`.
     */
    maxAge?: string;
}
export interface GetAppSpecStaticSiteCorsAllowOrigins {
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.
     */
    exact?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.
     *
     * @deprecated Prefix-based matching has been deprecated in favor of regex-based matching.
     */
    prefix?: string;
    /**
     * The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).
     */
    regex?: string;
}
export interface GetAppSpecStaticSiteEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecStaticSiteGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface GetAppSpecStaticSiteGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecStaticSiteGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecStaticSiteRoute {
    /**
     * Paths must start with `/` and must be unique within the app.
     */
    path?: string;
    /**
     * An optional flag to preserve the path that is forwarded to the backend service.
     */
    preservePathPrefix?: boolean;
}
export interface GetAppSpecWorker {
    /**
     * Describes an alert policy for the component.
     */
    alerts?: outputs.GetAppSpecWorkerAlert[];
    /**
     * Configuration for automatically scaling this component based on metrics.
     */
    autoscaling?: outputs.GetAppSpecWorkerAutoscaling;
    /**
     * A Bitbucket repo to use as component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    bitbucket?: outputs.GetAppSpecWorkerBitbucket;
    /**
     * An optional build command to run while building this component from source.
     */
    buildCommand?: string;
    /**
     * The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.
     */
    dockerfilePath?: string;
    /**
     * An environment slug describing the type of this app.
     */
    environmentSlug?: string;
    /**
     * Describes an environment variable made available to an app competent.
     */
    envs?: outputs.GetAppSpecWorkerEnv[];
    /**
     * A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of `git`, `github` or `gitlab`  may be set.
     */
    git?: outputs.GetAppSpecWorkerGit;
    /**
     * A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    github?: outputs.GetAppSpecWorkerGithub;
    /**
     * A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    gitlab?: outputs.GetAppSpecWorkerGitlab;
    /**
     * An image to use as the component's source. Only one of `git`, `github`, `bitbucket`, `gitlab`, or `image` may be set.
     */
    image?: outputs.GetAppSpecWorkerImage;
    /**
     * The amount of instances that this component should be scaled to.
     */
    instanceCount?: number;
    /**
     * The instance size to use for this component.
     */
    instanceSizeSlug?: string;
    /**
     * Describes a log forwarding destination.
     */
    logDestinations?: outputs.GetAppSpecWorkerLogDestination[];
    /**
     * The name of the component.
     */
    name: string;
    /**
     * An optional run command to override the component's default.
     */
    runCommand?: string;
    /**
     * An optional path to the working directory to use for the build.
     */
    sourceDir?: string;
    /**
     * Contains a component's termination parameters.
     */
    termination?: outputs.GetAppSpecWorkerTermination;
}
export interface GetAppSpecWorkerAlert {
    /**
     * Determines whether or not the alert is disabled (default: `false`).
     */
    disabled?: boolean;
    /**
     * The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.
     */
    operator: string;
    /**
     * The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.
     */
    rule: string;
    /**
     * The threshold for the type of the warning.
     */
    value: number;
    /**
     * The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.
     */
    window: string;
}
export interface GetAppSpecWorkerAutoscaling {
    /**
     * The maximum amount of instances for this component. Must be more than min_instance_count.
     */
    maxInstanceCount: number;
    /**
     * The metrics that the component is scaled on.
     */
    metrics: outputs.GetAppSpecWorkerAutoscalingMetrics;
    /**
     * The minimum amount of instances for this component. Must be less than max_instance_count.
     */
    minInstanceCount: number;
}
export interface GetAppSpecWorkerAutoscalingMetrics {
    /**
     * Settings for scaling the component based on CPU utilization.
     */
    cpu?: outputs.GetAppSpecWorkerAutoscalingMetricsCpu;
}
export interface GetAppSpecWorkerAutoscalingMetricsCpu {
    /**
     * The average target CPU utilization for the component.
     */
    percent: number;
}
export interface GetAppSpecWorkerBitbucket {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecWorkerEnv {
    /**
     * The name of the environment variable.
     */
    key?: string;
    /**
     * The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).
     */
    scope?: string;
    /**
     * The type of the environment variable, `GENERAL` or `SECRET`.
     */
    type: string;
    /**
     * The threshold for the type of the warning.
     */
    value?: string;
}
export interface GetAppSpecWorkerGit {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * The clone URL of the repo.
     */
    repoCloneUrl?: string;
}
export interface GetAppSpecWorkerGithub {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecWorkerGitlab {
    /**
     * The name of the branch to use.
     */
    branch?: string;
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPush?: boolean;
    /**
     * The name of the repo in the format `owner/repo`.
     */
    repo?: string;
}
export interface GetAppSpecWorkerImage {
    /**
     * Whether to automatically deploy new commits made to the repo.
     */
    deployOnPushes: outputs.GetAppSpecWorkerImageDeployOnPush[];
    /**
     * The image digest. Cannot be specified if `tag` is provided.
     */
    digest?: string;
    /**
     * The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.
     */
    registry?: string;
    /**
     * Access credentials for third-party registries
     */
    registryCredentials?: string;
    /**
     * The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.
     */
    registryType: string;
    /**
     * The repository name.
     */
    repository: string;
    /**
     * The repository tag. Defaults to `latest` if not provided.
     */
    tag?: string;
}
export interface GetAppSpecWorkerImageDeployOnPush {
    /**
     * Whether to automatically deploy images pushed to DOCR.
     */
    enabled?: boolean;
}
export interface GetAppSpecWorkerLogDestination {
    /**
     * Datadog configuration.
     */
    datadog?: outputs.GetAppSpecWorkerLogDestinationDatadog;
    /**
     * Logtail configuration.
     */
    logtail?: outputs.GetAppSpecWorkerLogDestinationLogtail;
    /**
     * The name of the component.
     */
    name: string;
    /**
     * OpenSearch configuration.
     */
    openSearch?: outputs.GetAppSpecWorkerLogDestinationOpenSearch;
    /**
     * Papertrail configuration.
     */
    papertrail?: outputs.GetAppSpecWorkerLogDestinationPapertrail;
}
export interface GetAppSpecWorkerLogDestinationDatadog {
    /**
     * Datadog API key.
     */
    apiKey: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
}
export interface GetAppSpecWorkerLogDestinationLogtail {
    /**
     * Logtail token.
     */
    token: string;
}
export interface GetAppSpecWorkerLogDestinationOpenSearch {
    /**
     * OpenSearch basic auth
     */
    basicAuth: outputs.GetAppSpecWorkerLogDestinationOpenSearchBasicAuth;
    /**
     * The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if `clusterName` is not set, a new cluster will be provisioned.
     */
    clusterName?: string;
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint?: string;
    /**
     * The index name to use for the logs. If not set, the default index name is `logs`.
     */
    indexName?: string;
}
export interface GetAppSpecWorkerLogDestinationOpenSearchBasicAuth {
    /**
     * Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.
     */
    password?: string;
    /**
     * Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when clusterName is set.
     */
    user?: string;
}
export interface GetAppSpecWorkerLogDestinationPapertrail {
    /**
     * OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>.
     */
    endpoint: string;
}
export interface GetAppSpecWorkerTermination {
    /**
     * The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.
     */
    gracePeriodSeconds?: number;
}
export interface GetDatabaseClusterMaintenanceWindow {
    /**
     * The day of the week on which to apply maintenance updates.
     */
    day: string;
    /**
     * The hour in UTC at which maintenance updates will be applied in 24 hour format.
     */
    hour: string;
}
export interface GetDatabaseUserSetting {
    acls?: outputs.GetDatabaseUserSettingAcl[];
    opensearchAcls?: outputs.GetDatabaseUserSettingOpensearchAcl[];
}
export interface GetDatabaseUserSettingAcl {
    id: string;
    permission: string;
    topic: string;
}
export interface GetDatabaseUserSettingOpensearchAcl {
    index: string;
    permission: string;
}
export interface GetDomainsDomain {
    /**
     * (Required) The name of the domain.
     */
    name: string;
    /**
     * The TTL of the domain.
     */
    ttl: number;
    /**
     * The uniform resource name of the domain
     */
    urn: string;
}
export interface GetDomainsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the domains by this key. This may be one of `name`, `urn`, and `ttl`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves domains
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetDomainsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the domains by this key. This may be one of `name`, `urn`, and `ttl`.
     */
    key: string;
}
export interface GetDropletAutoscaleConfig {
    /**
     * Cooldown duration
     */
    cooldownMinutes: number;
    /**
     * Max number of members
     */
    maxInstances: number;
    /**
     * Min number of members
     */
    minInstances: number;
    /**
     * CPU target threshold
     */
    targetCpuUtilization: number;
    /**
     * Memory target threshold
     */
    targetMemoryUtilization: number;
    /**
     * Target number of members
     */
    targetNumberInstances: number;
}
export interface GetDropletAutoscaleCurrentUtilization {
    /**
     * Average CPU utilization
     */
    cpu: number;
    /**
     * Average Memory utilization
     */
    memory: number;
}
export interface GetDropletAutoscaleDropletTemplate {
    /**
     * Droplet image
     */
    image: string;
    /**
     * Enable droplet IPv6
     */
    ipv6: boolean;
    /**
     * Droplet project ID
     */
    projectId: string;
    /**
     * Droplet region
     */
    region: string;
    /**
     * Droplet size
     */
    size: string;
    /**
     * Droplet SSH keys
     */
    sshKeys: string[];
    /**
     * Droplet tags
     */
    tags: string[];
    /**
     * Droplet user data
     */
    userData: string;
    /**
     * Droplet VPC UUID
     */
    vpcUuid: string;
    /**
     * Enable droplet agent
     */
    withDropletAgent: boolean;
}
export interface GetDropletsDroplet {
    /**
     * Whether backups are enabled.
     */
    backups: boolean;
    /**
     * the creation date for the Droplet
     */
    createdAt: string;
    /**
     * The size of the Droplet's disk in GB.
     */
    disk: number;
    /**
     * The ID of the Droplet.
     */
    id: number;
    /**
     * The Droplet image ID or slug.
     */
    image: string;
    /**
     * The Droplet's public IPv4 address
     */
    ipv4Address: string;
    /**
     * The Droplet's private IPv4 address
     */
    ipv4AddressPrivate: string;
    /**
     * Whether IPv6 is enabled.
     */
    ipv6: boolean;
    /**
     * The Droplet's public IPv6 address
     */
    ipv6Address: string;
    /**
     * The Droplet's private IPv6 address
     */
    ipv6AddressPrivate: string;
    /**
     * Whether the Droplet is locked.
     */
    locked: boolean;
    /**
     * The amount of the Droplet's memory in MB.
     */
    memory: number;
    /**
     * Whether monitoring agent is installed.
     */
    monitoring: boolean;
    /**
     * name of the Droplet
     */
    name: string;
    /**
     * Droplet hourly price.
     */
    priceHourly: number;
    /**
     * Droplet monthly price.
     */
    priceMonthly: number;
    /**
     * Whether private networks are enabled.
     */
    privateNetworking: boolean;
    /**
     * The region the Droplet is running in.
     */
    region: string;
    /**
     * The unique slug that identifies the type of Droplet.
     */
    size: string;
    /**
     * The status of the Droplet.
     */
    status: string;
    /**
     * A list of the tags associated to the Droplet.
     */
    tags: string[];
    /**
     * The uniform resource name of the Droplet
     */
    urn: string;
    /**
     * The number of the Droplet's virtual CPUs.
     */
    vcpus: number;
    /**
     * List of the IDs of each volumes attached to the Droplet.
     */
    volumeIds: string[];
    /**
     * The ID of the VPC where the Droplet is located.
     */
    vpcUuid: string;
}
export interface GetDropletsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the Droplets by this key. This may be one of `backups`, `createdAt`, `disk`, `id`,
     * `image`, `ipv4Address`, `ipv4AddressPrivate`, `ipv6`, `ipv6Address`, `ipv6AddressPrivate`, `locked`,
     * `memory`, `monitoring`, `name`, `priceHourly`, `priceMonthly`, `privateNetworking`, `region`, `size`,
     * `status`, `tags`, `urn`, `vcpus`, `volumeIds`, or `vpcUuid`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves Droplets
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetDropletsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the Droplets by this key. This may be one of `backups`, `createdAt`, `disk`, `id`,
     * `image`, `ipv4Address`, `ipv4AddressPrivate`, `ipv6`, `ipv6Address`, `ipv6AddressPrivate`, `locked`,
     * `memory`, `monitoring`, `name`, `priceHourly`, `priceMonthly`, `privateNetworking`, `region`, `size`,
     * `status`, `urn`, `vcpus`, or `vpcUuid`.
     */
    key: string;
}
export interface GetFirewallInboundRule {
    /**
     * The ports on which traffic will be allowed
     * specified as a string containing a single port, a range (e.g. "8000-9000"),
     * or "1-65535" to open all ports for a protocol. Required for when protocol is
     * `tcp` or `udp`.
     */
    portRange?: string;
    /**
     * The type of traffic to be allowed.
     * This may be one of "tcp", "udp", or "icmp".
     */
    protocol: string;
    /**
     * An array of strings containing the IPv4
     * addresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs from which the
     * inbound traffic will be accepted.
     */
    sourceAddresses?: string[];
    /**
     * An array containing the IDs of
     * the Droplets from which the inbound traffic will be accepted.
     */
    sourceDropletIds?: number[];
    sourceKubernetesIds?: string[];
    /**
     * An array containing the IDs
     * of the Load Balancers from which the inbound traffic will be accepted.
     */
    sourceLoadBalancerUids?: string[];
    /**
     * A set of names of Tags corresponding to group of
     * Droplets from which the inbound traffic will be accepted.
     */
    sourceTags?: string[];
}
export interface GetFirewallOutboundRule {
    /**
     * An array of strings containing the IPv4
     * addresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs to which the
     * outbound traffic will be allowed.
     */
    destinationAddresses?: string[];
    /**
     * An array containing the IDs of
     * the Droplets to which the outbound traffic will be allowed.
     */
    destinationDropletIds?: number[];
    destinationKubernetesIds?: string[];
    /**
     * An array containing the IDs
     * of the Load Balancers to which the outbound traffic will be allowed.
     */
    destinationLoadBalancerUids?: string[];
    /**
     * An array containing the names of Tags
     * corresponding to groups of Droplets to which the outbound traffic will
     * be allowed.
     * traffic.
     */
    destinationTags?: string[];
    /**
     * The ports on which traffic will be allowed
     * specified as a string containing a single port, a range (e.g. "8000-9000"),
     * or "1-65535" to open all ports for a protocol. Required for when protocol is
     * `tcp` or `udp`.
     */
    portRange?: string;
    /**
     * The type of traffic to be allowed.
     * This may be one of "tcp", "udp", or "icmp".
     */
    protocol: string;
}
export interface GetFirewallPendingChange {
    dropletId?: number;
    removing?: boolean;
    /**
     * A status string indicating the current state of the Firewall.
     * This can be "waiting", "succeeded", or "failed".
     */
    status?: string;
}
export interface GetImagesFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the images by this key. This may be one of `distribution`, `errorMessage`,
     * `id`, `image`, `minDiskSize`, `name`, `private`, `regions`, `sizeGigabytes`, `slug`, `status`,
     * `tags`, or `type`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves images
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetImagesImage {
    /**
     * When the image was created
     */
    created: string;
    /**
     * a description of the image
     */
    description: string;
    /**
     * The name of the distribution of the OS of the image.
     */
    distribution: string;
    /**
     * Any applicable error message pertaining to the image
     */
    errorMessage: string;
    /**
     * The ID of the image.
     */
    id: number;
    /**
     * The id of the image (legacy parameter).
     */
    image: string;
    /**
     * The minimum 'disk' required for the image.
     */
    minDiskSize: number;
    /**
     * The name of the image.
     */
    name: string;
    /**
     * Is image a public image or not. Public images represent
     * Linux distributions or One-Click Applications, while non-public images represent
     * snapshots and backups and are only available within your account.
     */
    private: boolean;
    /**
     * A set of the regions that the image is available in.
     */
    regions: string[];
    /**
     * The size of the image in GB.
     */
    sizeGigabytes: number;
    /**
     * Unique text identifier of the image.
     */
    slug: string;
    /**
     * Current status of the image
     */
    status: string;
    /**
     * A set of tags applied to the image
     */
    tags: string[];
    /**
     * Type of the image.
     */
    type: string;
}
export interface GetImagesSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the images by this key. This may be one of `distribution`, `errorMessage`, `id`,
     * `image`, `minDiskSize`, `name`, `private`, `sizeGigabytes`, `slug`, `status`, or `type`.
     */
    key: string;
}
export interface GetKubernetesClusterClusterAutoscalerConfiguration {
    scaleDownUnneededTime?: string;
    scaleDownUtilizationThreshold?: number;
}
export interface GetKubernetesClusterControlPlaneFirewall {
    allowedAddresses: string[];
    enabled: boolean;
}
export interface GetKubernetesClusterKubeConfig {
    /**
     * The base64 encoded public certificate used by clients to access the cluster. Only available if token authentication is not supported on your cluster.
     */
    clientCertificate: string;
    /**
     * The base64 encoded private key used by clients to access the cluster. Only available if token authentication is not supported on your cluster.
     */
    clientKey: string;
    /**
     * The base64 encoded public certificate for the cluster's certificate authority.
     */
    clusterCaCertificate: string;
    /**
     * The date and time when the credentials will expire and need to be regenerated.
     */
    expiresAt: string;
    /**
     * The URL of the API server on the Kubernetes master node.
     */
    host: string;
    /**
     * The full contents of the Kubernetes cluster's kubeconfig file.
     */
    rawConfig: string;
    /**
     * The DigitalOcean API access token used by clients to access the cluster.
     */
    token: string;
}
export interface GetKubernetesClusterMaintenancePolicy {
    /**
     * The day for the service window of the Kubernetes cluster.
     */
    day: string;
    /**
     * The duration of the operation.
     */
    duration: string;
    /**
     * The start time of the upgrade operation.
     */
    startTime: string;
}
export interface GetKubernetesClusterNodePool {
    /**
     * The actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.
     */
    actualNodeCount: number;
    /**
     * A boolean indicating whether auto-scaling is enabled on the node pool.
     */
    autoScale: boolean;
    /**
     * A unique ID that can be used to identify and reference the node.
     */
    id: string;
    /**
     * A map of key/value pairs applied to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).
     */
    labels: {
        [key: string]: string;
    };
    /**
     * If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.
     */
    maxNodes: number;
    /**
     * If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.
     */
    minNodes: number;
    /**
     * The name of Kubernetes cluster.
     */
    name: string;
    /**
     * The number of Droplet instances in the node pool.
     */
    nodeCount: number;
    /**
     * A list of nodes in the pool. Each node exports the following attributes:
     */
    nodes: outputs.GetKubernetesClusterNodePoolNode[];
    /**
     * The slug identifier for the type of Droplet used as workers in the node pool.
     */
    size: string;
    /**
     * A list of tag names applied to the node pool.
     */
    tags: string[];
    /**
     * A list of taints applied to all nodes in the pool. Each taint exports the following attributes:
     */
    taints: outputs.GetKubernetesClusterNodePoolTaint[];
}
export interface GetKubernetesClusterNodePoolNode {
    /**
     * The date and time when the node was created.
     */
    createdAt: string;
    dropletId: string;
    /**
     * A unique ID that can be used to identify and reference the node.
     */
    id: string;
    /**
     * The name of Kubernetes cluster.
     */
    name: string;
    /**
     * A string indicating the current status of the individual node.
     */
    status: string;
    /**
     * The date and time when the node was last updated.
     */
    updatedAt: string;
}
export interface GetKubernetesClusterNodePoolTaint {
    /**
     * How the node reacts to pods that it won't tolerate. Available effect values are: "NoSchedule", "PreferNoSchedule", "NoExecute".
     */
    effect: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    key: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    value: string;
}
export interface GetKubernetesClusterRoutingAgent {
    enabled: boolean;
}
export interface GetLoadBalancerDomain {
    /**
     * certificate ID for TLS handshaking
     */
    certificateId: string;
    /**
     * name of certificate required for TLS handshaking
     */
    certificateName: string;
    /**
     * flag indicating if domain is managed by DigitalOcean
     */
    isManaged: boolean;
    /**
     * The name of load balancer.
     */
    name: string;
    /**
     * list of domain SSL validation errors
     */
    sslValidationErrorReasons: string[];
    /**
     * list of domain verification errors
     */
    verificationErrorReasons: string[];
}
export interface GetLoadBalancerFirewall {
    /**
     * the rules for ALLOWING traffic to the LB (strings in the form: 'ip:1.2.3.4' or 'cidr:1.2.0.0/16')
     */
    allows: string[];
    /**
     * the rules for DENYING traffic to the LB (strings in the form: 'ip:1.2.3.4' or 'cidr:1.2.0.0/16')
     */
    denies: string[];
}
export interface GetLoadBalancerForwardingRule {
    /**
     * the id of the tls certificate used for ssl termination if enabled
     */
    certificateId: string;
    /**
     * the name of the tls certificate used for ssl termination if enabled
     */
    certificateName: string;
    /**
     * the port on which the load balancer instance will listen
     */
    entryPort: number;
    /**
     * the protocol used for traffic to the load balancer
     */
    entryProtocol: string;
    /**
     * the port on the backend Droplets to which the load balancer will send traffic
     */
    targetPort: number;
    /**
     * the protocol used for traffic to the backend droplets
     */
    targetProtocol: string;
    /**
     * whether ssl encrypted traffic will be passed through to the backend droplets
     */
    tlsPassthrough: boolean;
}
export interface GetLoadBalancerGlbSetting {
    /**
     * CDN specific configurations
     */
    cdns: outputs.GetLoadBalancerGlbSettingCdn[];
    /**
     * fail-over threshold
     */
    failoverThreshold: number;
    /**
     * region priority map
     */
    regionPriorities: {
        [key: string]: number;
    };
    /**
     * target port rules
     */
    targetPort: number;
    /**
     * target protocol rules
     */
    targetProtocol: string;
}
export interface GetLoadBalancerGlbSettingCdn {
    /**
     * cache enable flag
     */
    isEnabled: boolean;
}
export interface GetLoadBalancerHealthcheck {
    /**
     * the number of seconds between between two consecutive health checks
     */
    checkIntervalSeconds: number;
    /**
     * the number of times a health check must pass for a backend droplet to be marked 'healthy' and be re-added to the pool
     */
    healthyThreshold: number;
    /**
     * the path on the backend Droplets to which the Load Balancer will send a request
     */
    path: string;
    /**
     * the port on the backend droplets on which the health check will attempt a connection
     */
    port: number;
    /**
     * the protocol used for health checks sent to the backend droplets
     */
    protocol: string;
    /**
     * the number of seconds to wait for a response until marking a health check as failed
     */
    responseTimeoutSeconds: number;
    /**
     * The number of times a health check must fail for a backend droplet to be marked 'unhealthy' and be removed from the pool
     */
    unhealthyThreshold: number;
}
export interface GetLoadBalancerStickySession {
    /**
     * the name of the cookie sent to the client
     */
    cookieName: string;
    /**
     * the number of seconds until the cookie set by the Load Balancer expires
     */
    cookieTtlSeconds: number;
    /**
     * how and if requests from a client will be persistently served by the same backend droplet
     */
    type: string;
}
export interface GetProjectsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the projects by this key. This may be one of `name`,
     * `purpose`, `description`, `environment`, or `isDefault`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves projects
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetProjectsProject {
    /**
     * The date and time when the project was created, (ISO8601)
     */
    createdAt: string;
    /**
     * The description of the project
     */
    description: string;
    /**
     * The environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`.
     */
    environment: string;
    /**
     * The ID of the project
     */
    id: string;
    isDefault: boolean;
    /**
     * The name of the project
     */
    name: string;
    /**
     * The ID of the project owner
     */
    ownerId: number;
    /**
     * The unique universal identifier of the project owner
     */
    ownerUuid: string;
    /**
     * The purpose of the project (Default: "Web Application")
     */
    purpose: string;
    /**
     * A set of uniform resource names (URNs) for the resources associated with the project
     */
    resources: string[];
    /**
     * The date and time when the project was last updated, (ISO8601)
     */
    updatedAt: string;
}
export interface GetProjectsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the projects by this key. This may be one of `name`,
     * `purpose`, `description`, or `environment`.
     */
    key: string;
}
export interface GetRecordsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the DNS records by this key. This may be one of `domain`, `flags`, `name`, `port`,
     * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves DNS records
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetRecordsRecord {
    /**
     * The domain name to search for DNS records
     */
    domain: string;
    /**
     * An unsigned integer between 0-255 used for CAA records.
     */
    flags: number;
    /**
     * The ID of the record.
     */
    id: number;
    /**
     * The name of the DNS record.
     */
    name: string;
    /**
     * The port for SRV records.
     */
    port: number;
    /**
     * The priority for SRV and MX records.
     */
    priority: number;
    /**
     * The parameter tag for CAA records.
     */
    tag: string;
    /**
     * This value is the time to live for the record, in seconds. This defines the time frame that clients can cache queried information before a refresh should be requested.
     */
    ttl: number;
    /**
     * The type of the DNS record.
     */
    type: string;
    /**
     * Variable data depending on record type. For example, the "data" value for an A record would be the IPv4 address to which the domain will be mapped. For a CAA record, it would contain the domain name of the CA being granted permission to issue certificates.
     */
    value: string;
    /**
     * The weight for SRV records.
     */
    weight: number;
}
export interface GetRecordsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the DNS records by this key. This may be one of `domain`, `flags`, `name`, `port`,
     * `priority`, `tag`, `ttl`, `type`, `value`, or `weight`.
     */
    key: string;
}
export interface GetRegionsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the regions by this key. This may be one of `slug`,
     * `name`, `available`, `features`, or `sizes`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves regions
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetRegionsRegion {
    /**
     * A boolean value that represents whether new Droplets can be created in this region.
     */
    available: boolean;
    /**
     * A set of features available in this region.
     */
    features: string[];
    /**
     * The display name of the region.
     */
    name: string;
    /**
     * A set of identifying slugs for the Droplet sizes available in this region.
     */
    sizes: string[];
    /**
     * A human-readable string that is used as a unique identifier for each region.
     */
    slug: string;
}
export interface GetRegionsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the regions by this key. This may be one of `slug`,
     * `name`, or `available`.
     */
    key: string;
}
export interface GetSizesFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the sizes by this key. This may be one of `slug`,
     * `regions`, `memory`, `vcpus`, `disk`, `transfer`, `priceMonthly`,
     * `priceHourly`, or `available`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * Only retrieves sizes which keys has value that matches
     * one of the values provided here.
     */
    values: string[];
}
export interface GetSizesSize {
    /**
     * This represents whether new Droplets can be created with this size.
     */
    available: boolean;
    /**
     * The amount of disk space set aside for Droplets of this size. The value is measured in gigabytes.
     */
    disk: number;
    /**
     * The amount of RAM allocated to Droplets created of this size. The value is measured in megabytes.
     */
    memory: number;
    /**
     * The hourly cost of Droplets created in this size as measured hourly. The value is measured in US dollars.
     */
    priceHourly: number;
    /**
     * The monthly cost of Droplets created in this size if they are kept for an entire month. The value is measured in US dollars.
     */
    priceMonthly: number;
    /**
     * List of region slugs where Droplets can be created in this size.
     */
    regions: string[];
    /**
     * A human-readable string that is used to uniquely identify each size.
     */
    slug: string;
    /**
     * The amount of transfer bandwidth that is available for Droplets created in this size. This only counts traffic on the public interface. The value is given in terabytes.
     */
    transfer: number;
    /**
     * The number of CPUs allocated to Droplets of this size.
     */
    vcpus: number;
}
export interface GetSizesSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the sizes by this key. This may be one of `slug`,
     * `memory`, `vcpus`, `disk`, `transfer`, `priceMonthly`, or `priceHourly`.
     */
    key: string;
}
export interface GetSpacesBucketsBucket {
    /**
     * The FQDN of the bucket (e.g. bucket-name.nyc3.digitaloceanspaces.com)
     */
    bucketDomainName: string;
    /**
     * The FQDN of the bucket without the bucket name (e.g. nyc3.digitaloceanspaces.com)
     */
    endpoint: string;
    /**
     * The name of the Spaces bucket
     */
    name: string;
    /**
     * The slug of the region where the bucket is stored.
     */
    region: string;
    /**
     * The uniform resource name of the bucket
     */
    urn: string;
}
export interface GetSpacesBucketsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the images by this key. This may be one of `bucketDomainName`, `name`, `region`, or `urn`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * A list of values to match against the `key` field. Only retrieves Spaces buckets
     * where the `key` field takes on one or more of the values provided here.
     */
    values: string[];
}
export interface GetSpacesBucketsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the images by this key. This may be one of `bucketDomainName`, `name`, `region`, or `urn`.
     */
    key: string;
}
export interface GetSpacesKeyGrant {
    /**
     * The name of the bucket to grant the key access to.
     */
    bucket: string;
    /**
     * The permission to grant the key. Valid values are `read`, `readwrite`, or `fullaccess`.
     */
    permission: string;
}
export interface GetSshKeysFilter {
    all?: boolean;
    /**
     * Filter the SSH Keys by this key. This may be one of `name`, `publicKey`, or `fingerprint`.
     */
    key: string;
    matchBy?: string;
    /**
     * A list of values to match against the key field. Only retrieves SSH keys where the key field matches one or more of the values provided here.
     */
    values: string[];
}
export interface GetSshKeysSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the SSH Keys by this key. This may be one of `name`, `publicKey`, or `fingerprint`.
     */
    key: string;
}
export interface GetSshKeysSshKey {
    /**
     * The fingerprint of the public key of the ssh key.
     */
    fingerprint: string;
    /**
     * The ID of the ssh key.
     */
    id: number;
    /**
     * The name of the ssh key.
     */
    name: string;
    /**
     * The public key of the ssh key.
     */
    publicKey: string;
}
export interface GetTagsFilter {
    /**
     * Set to `true` to require that a field match all of the `values` instead of just one or more of
     * them. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure
     * that all of the `values` are present in the list or set.
     */
    all?: boolean;
    /**
     * Filter the tags by this key. This may be one of `name`, `totalResourceCount`,  `dropletsCount`, `imagesCount`, `volumesCount`, `volumeSnapshotsCount`, or `databasesCount`.
     */
    key: string;
    /**
     * One of `exact` (default), `re`, or `substring`. For string-typed fields, specify `re` to
     * match by using the `values` as regular expressions, or specify `substring` to match by treating the `values` as
     * substrings to find within the string field.
     */
    matchBy?: string;
    /**
     * Only retrieves tags which keys has value that matches
     * one of the values provided here.
     */
    values: string[];
}
export interface GetTagsSort {
    /**
     * The sort direction. This may be either `asc` or `desc`.
     */
    direction?: string;
    /**
     * Sort the tags by this key. This may be one of `name`, `totalResourceCount`,  `dropletsCount`, `imagesCount`, `volumesCount`, `volumeSnapshotsCount`, or `databasesCount`.
     */
    key: string;
}
export interface GetTagsTag {
    /**
     * A count of the database clusters that the tag is applied to.
     */
    databasesCount: number;
    /**
     * A count of the Droplets the tag is applied to.
     */
    dropletsCount: number;
    /**
     * A count of the images that the tag is applied to.
     */
    imagesCount: number;
    /**
     * The name of the tag.
     */
    name: string;
    /**
     * A count of the total number of resources that the tag is applied to.
     */
    totalResourceCount: number;
    /**
     * A count of the volume snapshots that the tag is applied to.
     */
    volumeSnapshotsCount: number;
    /**
     * A count of the volumes that the tag is applied to.
     */
    volumesCount: number;
}
export interface KubernetesClusterClusterAutoscalerConfiguration {
    scaleDownUnneededTime?: string;
    scaleDownUtilizationThreshold?: number;
}
export interface KubernetesClusterControlPlaneFirewall {
    allowedAddresses: string[];
    /**
     * Boolean flag whether the routing-agent is enabled or not.
     */
    enabled: boolean;
}
export interface KubernetesClusterKubeConfig {
    /**
     * The base64 encoded public certificate used by clients to access the cluster. Only available if token authentication is not supported on your cluster.
     */
    clientCertificate: string;
    /**
     * The base64 encoded private key used by clients to access the cluster. Only available if token authentication is not supported on your cluster.
     */
    clientKey: string;
    /**
     * The base64 encoded public certificate for the cluster's certificate authority.
     */
    clusterCaCertificate: string;
    /**
     * The date and time when the credentials will expire and need to be regenerated.
     */
    expiresAt: string;
    /**
     * The URL of the API server on the Kubernetes master node.
     */
    host: string;
    /**
     * The full contents of the Kubernetes cluster's kubeconfig file.
     */
    rawConfig: string;
    /**
     * The DigitalOcean API access token used by clients to access the cluster.
     */
    token: string;
}
export interface KubernetesClusterMaintenancePolicy {
    /**
     * The day of the maintenance window policy. May be one of "monday" through "sunday", or "any" to indicate an arbitrary week day.
     */
    day: string;
    /**
     * A string denoting the duration of the service window, e.g., "04:00".
     */
    duration: string;
    /**
     * The start time in UTC of the maintenance window policy in 24-hour clock format / HH:MM notation (e.g., 15:00).
     */
    startTime: string;
}
export interface KubernetesClusterNodePool {
    /**
     * A computed field representing the actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.
     */
    actualNodeCount: number;
    /**
     * Enable auto-scaling of the number of nodes in the node pool within the given min/max range.
     */
    autoScale?: boolean;
    /**
     * A unique ID that can be used to identify and reference the node.
     */
    id: string;
    /**
     * A map of key/value pairs to apply to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).
     */
    labels?: {
        [key: string]: string;
    };
    /**
     * If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.
     */
    maxNodes?: number;
    /**
     * If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.
     */
    minNodes?: number;
    /**
     * A name for the node pool.
     */
    name: string;
    /**
     * The number of Droplet instances in the node pool. If auto-scaling is enabled, this should only be set if the desired result is to explicitly reset the number of nodes to this value. If auto-scaling is enabled, and the node count is outside of the given min/max range, it will use the min nodes value.
     */
    nodeCount?: number;
    /**
     * A list of nodes in the pool. Each node exports the following attributes:
     */
    nodes: outputs.KubernetesClusterNodePoolNode[];
    /**
     * The slug identifier for the type of Droplet to be used as workers in the node pool.
     */
    size: string;
    /**
     * A list of tag names applied to the node pool.
     */
    tags?: string[];
    /**
     * A block representing a taint applied to all nodes in the pool. Each taint exports the following attributes (taints must be unique by key and effect pair):
     */
    taints?: outputs.KubernetesClusterNodePoolTaint[];
}
export interface KubernetesClusterNodePoolNode {
    /**
     * The date and time when the node was created.
     */
    createdAt: string;
    /**
     * The id of the node's droplet
     */
    dropletId: string;
    /**
     * A unique ID that can be used to identify and reference the node.
     */
    id: string;
    /**
     * A name for the Kubernetes cluster.
     */
    name: string;
    /**
     * A string indicating the current status of the individual node.
     */
    status: string;
    /**
     * The date and time when the node was last updated.
     */
    updatedAt: string;
}
export interface KubernetesClusterNodePoolTaint {
    /**
     * How the node reacts to pods that it won't tolerate. Available effect values are: "NoSchedule", "PreferNoSchedule", "NoExecute".
     */
    effect: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    key: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    value: string;
}
export interface KubernetesClusterRoutingAgent {
    /**
     * Boolean flag whether the routing-agent should be enabled or not.
     *
     *
     * This resource supports customized create timeouts. The default timeout is 30 minutes.
     */
    enabled: boolean;
}
export interface KubernetesNodePoolNode {
    /**
     * The date and time when the node was created.
     */
    createdAt: string;
    /**
     * The id of the node's droplet
     */
    dropletId: string;
    /**
     * A unique ID that can be used to identify and reference the node.
     */
    id: string;
    /**
     * A name for the node pool.
     */
    name: string;
    /**
     * A string indicating the current status of the individual node.
     */
    status: string;
    /**
     * The date and time when the node was last updated.
     */
    updatedAt: string;
}
export interface KubernetesNodePoolTaint {
    /**
     * How the node reacts to pods that it won't tolerate. Available effect values are: "NoSchedule", "PreferNoSchedule", "NoExecute".
     */
    effect: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    key: string;
    /**
     * An arbitrary string. The "key" and "value" fields of the "taint" object form a key-value pair.
     */
    value: string;
}
export interface LoadBalancerDomain {
    /**
     * name of certificate required for TLS handshaking
     */
    certificateName: string;
    /**
     * Control flag to specify whether the domain is managed by DigitalOcean.
     */
    isManaged?: boolean;
    /**
     * The domain name to be used for ingressing traffic to a Global Load Balancer.
     */
    name: string;
    /**
     * list of domain SSL validation errors
     */
    sslValidationErrorReasons: string[];
    /**
     * list of domain verification errors
     */
    verificationErrorReasons: string[];
}
export interface LoadBalancerFirewall {
    /**
     * A list of strings describing allow rules. Must be colon delimited strings of the form `{type}:{source}`
     * * Ex. `deny = ["cidr:1.2.0.0/16", "ip:2.3.4.5"]` or `allow = ["ip:1.2.3.4", "cidr:2.3.4.0/24"]`
     */
    allows?: string[];
    /**
     * A list of strings describing deny rules. Must be colon delimited strings of the form `{type}:{source}`
     */
    denies?: string[];
}
export interface LoadBalancerForwardingRule {
    /**
     * **Deprecated** The ID of the TLS certificate to be used for SSL termination.
     *
     * @deprecated Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead.
     */
    certificateId: string;
    /**
     * The unique name of the TLS certificate to be used for SSL termination.
     */
    certificateName: string;
    /**
     * An integer representing the port on which the Load Balancer instance will listen.
     */
    entryPort: number;
    /**
     * The protocol used for traffic to the Load Balancer. The possible values are: `http`, `https`, `http2`, `http3`, `tcp`, or `udp`.
     */
    entryProtocol: string;
    /**
     * An integer representing the port on the backend Droplets to which the Load Balancer will send traffic.
     */
    targetPort: number;
    /**
     * The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: `http`, `https`, `http2`, `tcp`, or `udp`.
     */
    targetProtocol: string;
    /**
     * A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets. The default value is `false`.
     */
    tlsPassthrough?: boolean;
}
export interface LoadBalancerGlbSettings {
    /**
     * CDN configuration supporting the following:
     */
    cdn?: outputs.LoadBalancerGlbSettingsCdn;
    /**
     * fail-over threshold
     */
    failoverThreshold?: number;
    /**
     * region priority map
     */
    regionPriorities?: {
        [key: string]: number;
    };
    /**
     * An integer representing the port on the backend Droplets to which the Load Balancer will send traffic. The possible values are: `80` for `http` and `443` for `https`.
     */
    targetPort: number;
    /**
     * The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: `http` and `https`.
     */
    targetProtocol: string;
}
export interface LoadBalancerGlbSettingsCdn {
    /**
     * Control flag to specify if caching is enabled.
     */
    isEnabled?: boolean;
}
export interface LoadBalancerHealthcheck {
    /**
     * The number of seconds between two consecutive health checks. If not specified, the default value is `10`.
     */
    checkIntervalSeconds?: number;
    /**
     * The number of times a health check must pass for a backend Droplet to be marked "healthy" and be re-added to the pool. If not specified, the default value is `5`.
     */
    healthyThreshold?: number;
    /**
     * The path on the backend Droplets to which the Load Balancer instance will send a request.
     */
    path?: string;
    /**
     * An integer representing the port on the backend Droplets on which the health check will attempt a connection.
     */
    port: number;
    /**
     * The protocol used for health checks sent to the backend Droplets. The possible values are `http`, `https` or `tcp`.
     */
    protocol: string;
    /**
     * The number of seconds the Load Balancer instance will wait for a response until marking a health check as failed. If not specified, the default value is `5`.
     */
    responseTimeoutSeconds?: number;
    /**
     * The number of times a health check must fail for a backend Droplet to be marked "unhealthy" and be removed from the pool. If not specified, the default value is `3`.
     */
    unhealthyThreshold?: number;
}
export interface LoadBalancerStickySessions {
    /**
     * The name to be used for the cookie sent to the client. This attribute is required when using `cookies` for the sticky sessions type.
     */
    cookieName?: string;
    /**
     * The number of seconds until the cookie set by the Load Balancer expires. This attribute is required when using `cookies` for the sticky sessions type.
     */
    cookieTtlSeconds?: number;
    /**
     * An attribute indicating how and if requests from a client will be persistently served by the same backend Droplet. The possible values are `cookies` or `none`. If not specified, the default value is `none`.
     */
    type?: string;
}
export interface MonitorAlertAlerts {
    /**
     * List of email addresses to sent notifications to
     */
    emails?: string[];
    slacks?: outputs.MonitorAlertAlertsSlack[];
}
export interface MonitorAlertAlertsSlack {
    /**
     * The Slack channel to send alerts to
     */
    channel: string;
    /**
     * The webhook URL for Slack
     */
    url: string;
}
export interface SpacesBucketCorsConfigurationCorsRule {
    /**
     * Set of Headers that are specified in the Access-Control-Request-Headers header.
     */
    allowedHeaders?: string[];
    /**
     * Set of HTTP methods that you allow the origin to execute. Valid values are GET, PUT, HEAD, POST, and DELETE.
     */
    allowedMethods: string[];
    /**
     * Set of origins you want customers to be able to access the bucket from.
     */
    allowedOrigins: string[];
    /**
     * Set of headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object).
     */
    exposeHeaders?: string[];
    /**
     * Unique identifier for the rule. The value cannot be longer than 255 characters.
     */
    id?: string;
    /**
     * Time in seconds that your browser is to cache the preflight response for the specified resource.
     */
    maxAgeSeconds?: number;
}
export interface SpacesBucketCorsRule {
    /**
     * A list of headers that will be included in the CORS preflight request's `Access-Control-Request-Headers`. A header may contain one wildcard (e.g. `x-amz-*`).
     */
    allowedHeaders?: string[];
    /**
     * A list of HTTP methods (e.g. `GET`) which are allowed from the specified origin.
     */
    allowedMethods: string[];
    /**
     * A list of hosts from which requests using the specified methods are allowed. A host may contain one wildcard (e.g. http://*.example.com).
     */
    allowedOrigins: string[];
    /**
     * The time in seconds that browser can cache the response for a preflight request.
     */
    maxAgeSeconds?: number;
}
export interface SpacesBucketLifecycleRule {
    /**
     * Specifies the number of days after initiating a multipart
     * upload when the multipart upload must be completed or else Spaces will abort the upload.
     */
    abortIncompleteMultipartUploadDays?: number;
    /**
     * Specifies lifecycle rule status.
     */
    enabled: boolean;
    /**
     * Specifies a time period after which applicable objects expire (documented below).
     */
    expiration?: outputs.SpacesBucketLifecycleRuleExpiration;
    /**
     * Unique identifier for the rule.
     */
    id: string;
    /**
     * Specifies when non-current object versions expire (documented below).
     *
     * At least one of `expiration` or `noncurrentVersionExpiration` must be specified.
     */
    noncurrentVersionExpiration?: outputs.SpacesBucketLifecycleRuleNoncurrentVersionExpiration;
    /**
     * Object key prefix identifying one or more objects to which the rule applies.
     */
    prefix?: string;
}
export interface SpacesBucketLifecycleRuleExpiration {
    /**
     * Specifies the date/time after which you want applicable objects to expire. The argument uses
     * RFC3339 format, e.g. "2020-03-22T15:03:55Z" or parts thereof e.g. "2019-02-28".
     */
    date?: string;
    /**
     * Specifies the number of days after object creation when the applicable objects will expire.
     */
    days?: number;
    /**
     * On a versioned bucket (versioning-enabled or versioning-suspended
     * bucket), setting this to true directs Spaces to delete expired object delete markers.
     */
    expiredObjectDeleteMarker?: boolean;
}
export interface SpacesBucketLifecycleRuleNoncurrentVersionExpiration {
    /**
     * Specifies the number of days after which an object's non-current versions expire.
     */
    days?: number;
}
export interface SpacesBucketVersioning {
    /**
     * Enable versioning. Once you version-enable a bucket, it can never return to an unversioned
     * state. You can, however, suspend versioning on that bucket.
     */
    enabled?: boolean;
}
export interface SpacesKeyGrant {
    /**
     * Name of the bucket associated with this grant. In case of a `fullaccess` permission, this value should be an empty string.
     */
    bucket: string;
    /**
     * Permission associated with this grant. Values can be `read`, `readwrite`, `fullaccess`.
     */
    permission: string;
}
export interface UptimeAlertNotification {
    /**
     * List of email addresses to sent notifications to.
     */
    emails?: string[];
    slacks?: outputs.UptimeAlertNotificationSlack[];
}
export interface UptimeAlertNotificationSlack {
    /**
     * The Slack channel to send alerts to.
     */
    channel: string;
    /**
     * The webhook URL for Slack.
     */
    url: string;
}
