PyDo — DigitalOcean’s Python library

pydo is a Python client library for DigitalOceans’s HTTP API.

Installation

Install from PyPI:

pip install pydo

Initialization

pydo must be initialized with pydo.client(). A DigitalOcean API Token is required. The token can be passed explicitly to pydo.client() or defined as environment variables DIGITALOCEAN_TOKEN.

Here’s an example of initializing the PyDo Client:

from pydo import Client

client = Client(token="<DIGITALOCEAN_TOKEN>")
pydo.Client(token: str, *, timeout: int = 120, **kwargs)

The official DigitalOcean Python client

Parameters:

Example

Find below a working example for GET a ssh_key (per this http request) and printing the ID associated with the ssh key. If you’d like to try out this quick example, you can follow these instructions to add ssh keys to your DO account:

from pydo import Client

client = Client(token="<YOUR-API-TOKEN>")

ssh_keys_resp = client.ssh_keys.list()
for k in ssh_keys_resp["ssh_keys"]:
   print(f"ID: {k['id']}, NAME: {k['name']}, FINGERPRINT: {k['fingerprint']}")

The above code snippet should output the following:

ID: 123456, NAME: my_test_ssh_key, FINGERPRINT: 5c:74:7e:60:28:69:34:ca:dd:74:67:c3:f3:00:7f:fe
ID: 123457, NAME: my_prod_ssh_key, FINGERPRINT: eb:76:c7:2a:d3:3e:80:5d:ef:2e:ca:86:d7:79:94:0d

You can find a more thorough example of using the PyDo client here. The example walks through the process of creating a droplet with a specified ssh key, creating a volume, and then attaching the volume to the droplet.

Pagination

Below is an example on handling pagination. One must parse the URL to find the next page:

resp = self.client.ssh_keys.list(per_page=50, page=page)
pages = resp.links.pages
   if 'next' in pages.keys():
         parsed_url = urlparse(pages['next'])
         page = parse_qs(parsed_url.query)['page'][0]
   else:
         paginated = False

pydo.Client Usage

class pydo.operations.AccountOperations(*args, **kwargs)

Bases: object

Warning

DO NOT instantiate this class directly.

Instead, you should access the following operations through GeneratedClient’s account attribute.

get(**kwargs: Any) MutableMapping[str, Any]

Get User Information.

To show information about the current user account, send a GET request to /v2/account.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "account": {
        "droplet_limit": 0,  # The total number of Droplets current user or
          team may have active at one time. Required.
        "email": "str",  # The email address used by the current user to
          register for DigitalOcean. Required.
        "email_verified": False,  # Default value is False. If true, the user
          has verified their account via email. False otherwise. Required.
        "floating_ip_limit": 0,  # The total number of Floating IPs the
          current user or team may have. Required.
        "status": "active",  # Default value is "active". This value is one
          of "active", "warning" or "locked". Known values are: "active", "warning",
          and "locked".
        "status_message": "str",  # A human-readable message giving more
          details about the status of the account. Required.
        "uuid": "str",  # The unique universal identifier for the current
          user. Required.
        "name": "str",  # Optional. The display name for the current user.
        "team": {
            "name": "str",  # Optional. The name for the current team.
            "uuid": "str"  # Optional. The unique universal identifier
              for the current team.
        }
    }
}
class pydo.operations.ActionsOperations(*args, **kwargs)

Bases: object

Warning

DO NOT instantiate this class directly.

Instead, you should access the following operations through GeneratedClient’s actions attribute.

get(action_id: int, **kwargs: Any) MutableMapping[str, Any]

Retrieve an Existing Action.

To retrieve a specific action object, send a GET request to /v2/actions/$ACTION_ID.

Parameters:

action_id (int) – A unique numeric ID that can be used to identify and reference an action. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "action": {
        "completed_at": "2020-02-20 00:00:00",  # Optional. A time value
          given in ISO8601 combined date and time format that represents when the
          action was completed.
        "id": 0,  # Optional. A unique numeric ID that can be used to
          identify and reference an action.
        "region": {
            "available": bool,  # This is a boolean value that represents
              whether new Droplets can be created in this region. Required.
            "features": {},  # This attribute is set to an array which
              contains features available in this region. Required.
            "name": "str",  # The display name of the region.  This will
              be a full name that is used in the control panel and other interfaces.
              Required.
            "sizes": {},  # This attribute is set to an array which
              contains the identifying slugs for the sizes available in this region.
              Required.
            "slug": "str"  # A human-readable string that is used as a
              unique identifier for each region. Required.
        },
        "region_slug": {},  # Optional. Any object.
        "resource_id": 0,  # Optional. A unique identifier for the resource
          that the action is associated with.
        "resource_type": "str",  # Optional. The type of resource that the
          action is associated with.
        "started_at": "2020-02-20 00:00:00",  # Optional. A time value given
          in ISO8601 combined date and time format that represents when the action was
          initiated.
        "status": "in-progress",  # Optional. Default value is "in-progress".
          The current status of the action. This can be "in-progress", "completed", or
          "errored". Known values are: "in-progress", "completed", and "errored".
        "type": "str"  # Optional. This is the type of action that the object
          represents. For example, this could be "transfer" to represent the state of
          an image transfer action.
    }
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
list(*, per_page: int = 20, page: int = 1, **kwargs: Any) MutableMapping[str, Any]

List All Actions.

This will be the entire list of actions taken on your account, so it will be quite large. As with any large collection returned by the API, the results will be paginated with only 20 on each page by default.

Parameters:
  • per_page (int) – Number of items returned per page. Default value is 20.

  • page (int) – Which ‘page’ of paginated results to return. Default value is 1.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "meta": {
        "total": 0  # Optional. Number of objects returned by the request.
    },
    "actions": [
        {
            "completed_at": "2020-02-20 00:00:00",  # Optional. A time
              value given in ISO8601 combined date and time format that represents when
              the action was completed.
            "id": 0,  # Optional. A unique numeric ID that can be used to
              identify and reference an action.
            "region": {
                "available": bool,  # This is a boolean value that
                  represents whether new Droplets can be created in this region.
                  Required.
                "features": {},  # This attribute is set to an array
                  which contains features available in this region. Required.
                "name": "str",  # The display name of the region.
                  This will be a full name that is used in the control panel and other
                  interfaces. Required.
                "sizes": {},  # This attribute is set to an array
                  which contains the identifying slugs for the sizes available in this
                  region. Required.
                "slug": "str"  # A human-readable string that is used
                  as a unique identifier for each region. Required.
            },
            "region_slug": {},  # Optional. Any object.
            "resource_id": 0,  # Optional. A unique identifier for the
              resource that the action is associated with.
            "resource_type": "str",  # Optional. The type of resource
              that the action is associated with.
            "started_at": "2020-02-20 00:00:00",  # Optional. A time
              value given in ISO8601 combined date and time format that represents when
              the action was initiated.
            "status": "in-progress",  # Optional. Default value is
              "in-progress". The current status of the action. This can be
              "in-progress", "completed", or "errored". Known values are:
              "in-progress", "completed", and "errored".
            "type": "str"  # Optional. This is the type of action that
              the object represents. For example, this could be "transfer" to represent
              the state of an image transfer action.
        }
    ],
    "links": {
        "pages": {}
    }
}
class pydo.operations.AppsOperations(*args, **kwargs)

Bases: object

Warning

DO NOT instantiate this class directly.

Instead, you should access the following operations through GeneratedClient’s apps attribute.

assign_alert_destinations(app_id: str, alert_id: str, body: JSON, *, content_type: str = 'application/json', **kwargs: Any) JSON
assign_alert_destinations(app_id: str, alert_id: str, body: IO[bytes], *, content_type: str = 'application/json', **kwargs: Any) JSON

Update destinations for alerts.

Updates the emails and slack webhook destinations for app alerts. Emails must be associated to a user with access to the app.

Parameters:
  • app_id (str) – The app ID. Required.

  • alert_id (str) – The alert ID. Required.

  • body (JSON or IO[bytes]) – Is either a JSON type or a IO[bytes] type. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# JSON input template you can fill out and use as your body input.
body = {
    "emails": [
        ""  # Optional. Default value is "".
    ],
    "slack_webhooks": [
        {
            "channel": "str",  # Optional. Name of the Slack Webhook
              Channel.
            "url": "str"  # Optional. URL of the Slack webhook.
        }
    ]
}

# response body for status code(s): 200
response == {
    "alert": {
        "component_name": "str",  # Optional. Name of component the alert
          belongs to.
        "emails": [
            ""  # Optional. Default value is "". Emails for alerts to go
              to.
        ],
        "id": "str",  # Optional. The ID of the alert.
        "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN". Known
          values are: "UNKNOWN", "PENDING", "CONFIGURING", "ACTIVE", and "ERROR".
        "progress": {
            "steps": [
                {
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN"  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                }
            ]
        },
        "slack_webhooks": [
            {
                "channel": "str",  # Optional. Name of the Slack
                  Webhook Channel.
                "url": "str"  # Optional. URL of the Slack webhook.
            }
        ],
        "spec": {
            "disabled": bool,  # Optional. Is the alert disabled?.
            "operator": "UNSPECIFIED_OPERATOR",  # Optional. Default
              value is "UNSPECIFIED_OPERATOR". Known values are:
              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
            "rule": "UNSPECIFIED_RULE",  # Optional. Default value is
              "UNSPECIFIED_RULE". Known values are: "UNSPECIFIED_RULE",
              "CPU_UTILIZATION", "MEM_UTILIZATION", "RESTART_COUNT",
              "DEPLOYMENT_FAILED", "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
              "FUNCTIONS_ACTIVATION_COUNT", "FUNCTIONS_AVERAGE_DURATION_MS",
              "FUNCTIONS_ERROR_RATE_PER_MINUTE", "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
              "FUNCTIONS_ERROR_COUNT", and "FUNCTIONS_GB_RATE_PER_SECOND".
            "value": 0.0,  # Optional. Threshold value for alert.
            "window": "UNSPECIFIED_WINDOW"  # Optional. Default value is
              "UNSPECIFIED_WINDOW". Known values are: "UNSPECIFIED_WINDOW",
              "FIVE_MINUTES", "TEN_MINUTES", "THIRTY_MINUTES", and "ONE_HOUR".
        }
    }
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
cancel_deployment(app_id: str, deployment_id: str, **kwargs: Any) MutableMapping[str, Any]

Cancel a Deployment.

Immediately cancel an in-progress deployment.

Parameters:
  • app_id (str) – The app ID. Required.

  • deployment_id (str) – The deployment ID. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "deployment": {
        "cause": "str",  # Optional. What caused this deployment to be
          created.
        "cloned_from": "str",  # Optional. The ID of a previous deployment
          that this deployment was cloned from.
        "created_at": "2020-02-20 00:00:00",  # Optional. The creation time
          of the deployment.
        "functions": [
            {
                "name": "str",  # Optional. The name of this
                  functions component.
                "namespace": "str",  # Optional. The namespace where
                  the functions are deployed.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this functions
                  component.
            }
        ],
        "id": "str",  # Optional. The ID of the deployment.
        "jobs": [
            {
                "name": "str",  # Optional. The name of this job.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this job.
            }
        ],
        "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN". Known
          values are: "UNKNOWN", "PENDING_BUILD", "BUILDING", "PENDING_DEPLOY",
          "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and "CANCELED".
        "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional. When the
          deployment phase was last updated.
        "progress": {
            "error_steps": 0,  # Optional. Number of unsuccessful steps.
            "pending_steps": 0,  # Optional. Number of pending steps.
            "running_steps": 0,  # Optional. Number of currently running
              steps.
            "steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "success_steps": 0,  # Optional. Number of successful steps.
            "summary_steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "total_steps": 0  # Optional. Total number of steps.
        },
        "services": [
            {
                "name": "str",  # Optional. The name of this service.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this service.
            }
        ],
        "spec": {
            "name": "str",  # The name of the app. Must be unique across
              all apps in the same account. Required.
            "databases": [
                {
                    "name": "str",  # The database's name. The
                      name must be unique across all components within the same app and
                      cannot use capital letters. Required.
                    "cluster_name": "str",  # Optional. The name
                      of the underlying DigitalOcean DBaaS cluster. This is required
                      for production databases. For dev databases, if cluster_name is
                      not set, a new cluster will be provisioned.
                    "db_name": "str",  # Optional. The name of
                      the MySQL or PostgreSQL database to configure.
                    "db_user": "str",  # Optional. The name of
                      the MySQL or PostgreSQL user to configure.
                    "engine": "UNSET",  # Optional. Default value
                      is "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis *
                      MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known
                      values are: "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA",
                      and "OPENSEARCH".
                    "production": bool,  # Optional. Whether this
                      is a production or dev database.
                    "version": "str"  # Optional. The version of
                      the database engine.
                }
            ],
            "domains": [
                {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                }
            ],
            "egress": {
                "type": "AUTOASSIGN"  # Optional. Default value is
                  "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
                  "DEDICATED_IP".
            },
            "functions": [
                {
                    "name": "str",  # The name. Must be unique
                      across all components within the same app. Required.
                    "alerts": [
                        {
                            "disabled": bool,  #
                              Optional. Is the alert disabled?.
                            "operator":
                              "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                              "UNSPECIFIED_OPERATOR". Known values are:
                              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
                            "rule": "UNSPECIFIED_RULE",
                              # Optional. Default value is "UNSPECIFIED_RULE". Known
                              values are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                              "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                              "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                              "FUNCTIONS_ACTIVATION_COUNT",
                              "FUNCTIONS_AVERAGE_DURATION_MS",
                              "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                              "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                              "FUNCTIONS_ERROR_COUNT", and
                              "FUNCTIONS_GB_RATE_PER_SECOND".
                            "value": 0.0,  # Optional.
                              Threshold value for alert.
                            "window":
                              "UNSPECIFIED_WINDOW"  # Optional. Default value is
                              "UNSPECIFIED_WINDOW". Known values are:
                              "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                              "THIRTY_MINUTES", and "ONE_HOUR".
                        }
                    ],
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "ingress": {
                "rules": [
                    {
                        "component": {
                            "name": "str",  # The name of
                              the component to route to. Required.
                            "preserve_path_prefix":
                              "str",  # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``. Note: this is not applicable for
                              Functions Components and is mutually exclusive with
                              ``rewrite``.
                            "rewrite": "str"  # Optional.
                              An optional field that will rewrite the path of the
                              component to be what is specified here. By default, the
                              HTTP request path will be trimmed from the left when
                              forwarded to the component. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If you specified the rewrite to be
                              ``/v1/``"" , requests to ``/api/list`` would be rewritten
                              to ``/v1/list``. Note: this is mutually exclusive with
                              ``preserve_path_prefix``.
                        },
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "match": {
                            "path": {
                                "prefix": "str"  #
                                  Prefix-based match. For example, ``/api`` will match
                                  ``/api``"" , ``/api/``"" , and any nested paths such
                                  as ``/api/v1/endpoint``. Required.
                            }
                        },
                        "redirect": {
                            "authority": "str",  #
                              Optional. The authority/host to redirect to. This can be
                              a hostname or IP address. Note: use ``port`` to set the
                              port.
                            "port": 0,  # Optional. The
                              port to redirect to.
                            "redirect_code": 0,  #
                              Optional. The redirect code to use. Defaults to ``302``.
                              Supported values are 300, 301, 302, 303, 304, 307, 308.
                            "scheme": "str",  # Optional.
                              The scheme to redirect to. Supported values are ``http``
                              or ``https``. Default: ``https``.
                            "uri": "str"  # Optional. An
                              optional URI path to redirect to. Note: if this is
                              specified the whole URI of the original request will be
                              overwritten to this value, irrespective of the original
                              request URI being matched.
                        }
                    }
                ]
            },
            "jobs": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "kind": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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. Known values
                      are: "UNSPECIFIED", "PRE_DEPLOY", "POST_DEPLOY", and
                      "FAILED_DEPLOY".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "region": "str",  # Optional. The slug form of the
              geographical origin of the app. Default: ``nearest available``. Known
              values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and
              "syd".
            "services": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "health_check": {
                        "failure_threshold": 0,  # Optional.
                          The number of failed health checks before considered
                          unhealthy.
                        "http_path": "str",  # Optional. The
                          route path used for the HTTP health check ping. If not set,
                          the HTTP health check will be disabled and a TCP health check
                          used instead.
                        "initial_delay_seconds": 0,  #
                          Optional. The number of seconds to wait before beginning
                          health checks.
                        "period_seconds": 0,  # Optional. The
                          number of seconds to wait between health checks.
                        "port": 0,  # Optional. 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.
                        "success_threshold": 0,  # Optional.
                          The number of successful health checks before considered
                          healthy.
                        "timeout_seconds": 0  # Optional. The
                          number of seconds after which the check times out.
                    },
                    "http_port": 0,  # Optional. The internal
                      port on which this service's run command will listen. Default:
                      8080 If there is not an environment variable with the name
                      ``PORT``"" , one will be automatically added with its value set
                      to the value of this field.
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "internal_ports": [
                        0  # Optional. The ports on which
                          this service will listen for internal traffic.
                    ],
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "drain_seconds": 0,  # Optional. 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).
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "static_sites": [
                {
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "catchall_document": "str",  # Optional. The
                      name of the document to use as the fallback for any requests to
                      documents that are not found when serving this static site. Only
                      1 of ``catchall_document`` or ``error_document`` can be set.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "error_document": "404.html",  # Optional.
                      Default value is "404.html". The name of the error document to
                      use when serving this static site. Default: 404.html. If no such
                      file exists within the built assets, App Platform will supply
                      one.
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "index_document": "index.html",  # Optional.
                      Default value is "index.html". The name of the index document to
                      use when serving this static site. Default: index.html.
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "output_dir": "str",  # Optional. 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``"" , ``build``.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "workers": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ]
        },
        "static_sites": [
            {
                "name": "str",  # Optional. The name of this static
                  site.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this static site.
            }
        ],
        "tier_slug": "str",  # Optional. The current pricing tier slug of the
          deployment.
        "updated_at": "2020-02-20 00:00:00",  # Optional. When the deployment
          was last updated.
        "workers": [
            {
                "name": "str",  # Optional. The name of this worker.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this worker.
            }
        ]
    }
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
commit_rollback(app_id: str, **kwargs: Any) Optional[MutableMapping[str, Any]]

Commit App Rollback.

Commit an app rollback. This action permanently applies the rollback and unpins the app to resume new deployments.

Parameters:

app_id (str) – The app ID. Required.

Returns:

JSON object or None

Return type:

JSON or None

Raises:

HttpResponseError

Example:
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
create(body: JSON, *, content_type: str = 'application/json', **kwargs: Any) JSON
create(body: IO[bytes], *, content_type: str = 'application/json', **kwargs: Any) JSON

Create a New App.

Create a new app by submitting an app specification. For documentation on app specifications (AppSpec objects), please refer to the product documentation.

Parameters:

body (JSON or IO[bytes]) – Is either a JSON type or a IO[bytes] type. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# JSON input template you can fill out and use as your body input.
body = {
    "spec": {
        "name": "str",  # The name of the app. Must be unique across all apps
          in the same account. Required.
        "databases": [
            {
                "name": "str",  # The database's name. The name must
                  be unique across all components within the same app and cannot use
                  capital letters. Required.
                "cluster_name": "str",  # Optional. The name of the
                  underlying DigitalOcean DBaaS cluster. This is required for
                  production databases. For dev databases, if cluster_name is not set,
                  a new cluster will be provisioned.
                "db_name": "str",  # Optional. The name of the MySQL
                  or PostgreSQL database to configure.
                "db_user": "str",  # Optional. The name of the MySQL
                  or PostgreSQL user to configure.
                "engine": "UNSET",  # Optional. Default value is
                  "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis * MONGODB:
                  MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known values are:
                  "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA", and
                  "OPENSEARCH".
                "production": bool,  # Optional. Whether this is a
                  production or dev database.
                "version": "str"  # Optional. The version of the
                  database engine.
            }
        ],
        "domains": [
            {
                "domain": "str",  # The hostname for the domain.
                  Required.
                "minimum_tls_version": "str",  # Optional. The
                  minimum version of TLS a client application can use to access
                  resources for the domain.  Must be one of the following values
                  wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values are:
                  "1.2" and "1.3".
                "type": "UNSPECIFIED",  # Optional. Default value is
                  "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED", "DEFAULT",
                  "PRIMARY", and "ALIAS".
                "wildcard": bool,  # Optional. Indicates whether the
                  domain includes all sub-domains, in addition to the given domain.
                "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are adding is
                  ``app.domain.com``"" , the zone could be ``domain.com``.
            }
        ],
        "egress": {
            "type": "AUTOASSIGN"  # Optional. Default value is
              "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
              "DEDICATED_IP".
        },
        "functions": [
            {
                "name": "str",  # The name. Must be unique across all
                  components within the same app. Required.
                "alerts": [
                    {
                        "disabled": bool,  # Optional. Is the
                          alert disabled?.
                        "operator": "UNSPECIFIED_OPERATOR",
                          # Optional. Default value is "UNSPECIFIED_OPERATOR". Known
                          values are: "UNSPECIFIED_OPERATOR", "GREATER_THAN", and
                          "LESS_THAN".
                        "rule": "UNSPECIFIED_RULE",  #
                          Optional. Default value is "UNSPECIFIED_RULE". Known values
                          are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                          "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                          "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                          "FUNCTIONS_ACTIVATION_COUNT",
                          "FUNCTIONS_AVERAGE_DURATION_MS",
                          "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                          "FUNCTIONS_AVERAGE_WAIT_TIME_MS", "FUNCTIONS_ERROR_COUNT",
                          and "FUNCTIONS_GB_RATE_PER_SECOND".
                        "value": 0.0,  # Optional. Threshold
                          value for alert.
                        "window": "UNSPECIFIED_WINDOW"  #
                          Optional. Default value is "UNSPECIFIED_WINDOW". Known values
                          are: "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                          "THIRTY_MINUTES", and "ONE_HOUR".
                    }
                ],
                "cors": {
                    "allow_credentials": bool,  # Optional.
                      Whether browsers should expose the response to the client-side
                      JavaScript code when the request"u2019s credentials mode is
                      include. This configures the ``Access-Control-Allow-Credentials``
                      header.
                    "allow_headers": [
                        "str"  # Optional. The set of allowed
                          HTTP request headers. This configures the
                          ``Access-Control-Allow-Headers`` header.
                    ],
                    "allow_methods": [
                        "str"  # Optional. The set of allowed
                          HTTP methods. This configures the
                          ``Access-Control-Allow-Methods`` header.
                    ],
                    "allow_origins": [
                        {
                            "exact": "str",  # Optional.
                              Exact string match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "prefix": "str",  # Optional.
                              Prefix-based match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "regex": "str"  # Optional.
                              RE2 style regex-based match. Only 1 of ``exact``"" ,
                              ``prefix``"" , or ``regex`` must be set. For more
                              information about RE2 syntax, see:
                              https://github.com/google/re2/wiki/Syntax.
                        }
                    ],
                    "expose_headers": [
                        "str"  # Optional. The set of HTTP
                          response headers that browsers are allowed to access. This
                          configures the ``Access-Control-Expose-Headers`` header.
                    ],
                    "max_age": "str"  # Optional. An optional
                      duration specifying how long browsers can cache the results of a
                      preflight request. This configures the ``Access-Control-Max-Age``
                      header.
                },
                "envs": [
                    {
                        "key": "str",  # The variable name.
                          Required.
                        "scope": "RUN_AND_BUILD_TIME",  #
                          Optional. Default value is "RUN_AND_BUILD_TIME". * RUN_TIME:
                          Made available only at run-time * BUILD_TIME: Made available
                          only at build-time * RUN_AND_BUILD_TIME: Made available at
                          both build and run-time. Known values are: "UNSET",
                          "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                        "type": "GENERAL",  # Optional.
                          Default value is "GENERAL". * GENERAL: A plain-text
                          environment variable * SECRET: A secret encrypted environment
                          variable. Known values are: "GENERAL" and "SECRET".
                        "value": "str"  # Optional. The
                          value. If the type is ``SECRET``"" , the value will be
                          encrypted on first submission. On following submissions, the
                          encrypted value should be used.
                    }
                ],
                "git": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "repo_clone_url": "str"  # Optional. The
                      clone URL of the repo. Example:
                      ``https://github.com/digitalocean/sample-golang.git``.
                },
                "github": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "gitlab": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "log_destinations": [
                    {
                        "name": "str",  # Required.
                        "datadog": {
                            "api_key": "str",  # Datadog
                              API key. Required.
                            "endpoint": "str"  #
                              Optional. Datadog HTTP log intake endpoint.
                        },
                        "logtail": {
                            "token": "str"  # Optional.
                              Logtail token.
                        },
                        "open_search": {
                            "basic_auth": {
                                "password": {},  #
                                  Optional. Password for user defined in User. Is
                                  required when ``endpoint`` is set. Cannot be set if
                                  using a DigitalOcean DBaaS OpenSearch cluster.
                                "user": "str"  #
                                  Optional. Username to authenticate with. Only
                                  required when ``endpoint`` is set. Defaults to
                                  ``doadmin`` when ``cluster_name`` is set.
                            },
                            "cluster_name": "str",  #
                              Optional. The name of a DigitalOcean DBaaS OpenSearch
                              cluster to use as a log forwarding destination. Cannot be
                              specified if ``endpoint`` is also specified.
                            "endpoint": "str",  #
                              Optional. OpenSearch API Endpoint. Only HTTPS is
                              supported. Format: https://:code:`<host>`::code:`<port>`.
                              Cannot be specified if ``cluster_name`` is also
                              specified.
                            "index_name": "logs"  #
                              Optional. Default value is "logs". The index name to use
                              for the logs. If not set, the default index name is
                              "logs".
                        },
                        "papertrail": {
                            "endpoint": "str"  #
                              Papertrail syslog endpoint. Required.
                        }
                    }
                ],
                "routes": [
                    {
                        "path": "str",  # Optional.
                          (Deprecated - Use Ingress Rules instead). An HTTP path
                          prefix. Paths must start with / and must be unique across all
                          components within an app.
                        "preserve_path_prefix": bool  #
                          Optional. An optional 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. For example, a component with ``path=/api``
                          will have requests to ``/api/list`` trimmed to ``/list``. If
                          this value is ``true``"" , the path will remain
                          ``/api/list``.
                    }
                ],
                "source_dir": "str"  # Optional. An optional path to
                  the working directory to use for the build. For Dockerfile builds,
                  this will be used as the build context. Must be relative to the root
                  of the repo.
            }
        ],
        "ingress": {
            "rules": [
                {
                    "component": {
                        "name": "str",  # The name of the
                          component to route to. Required.
                        "preserve_path_prefix": "str",  #
                          Optional. An optional 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. For example, a component with ``path=/api``
                          will have requests to ``/api/list`` trimmed to ``/list``. If
                          this value is ``true``"" , the path will remain
                          ``/api/list``. Note: this is not applicable for Functions
                          Components and is mutually exclusive with ``rewrite``.
                        "rewrite": "str"  # Optional. An
                          optional field that will rewrite the path of the component to
                          be what is specified here. By default, the HTTP request path
                          will be trimmed from the left when forwarded to the
                          component. For example, a component with ``path=/api`` will
                          have requests to ``/api/list`` trimmed to ``/list``. If you
                          specified the rewrite to be ``/v1/``"" , requests to
                          ``/api/list`` would be rewritten to ``/v1/list``. Note: this
                          is mutually exclusive with ``preserve_path_prefix``.
                    },
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "match": {
                        "path": {
                            "prefix": "str"  #
                              Prefix-based match. For example, ``/api`` will match
                              ``/api``"" , ``/api/``"" , and any nested paths such as
                              ``/api/v1/endpoint``. Required.
                        }
                    },
                    "redirect": {
                        "authority": "str",  # Optional. The
                          authority/host to redirect to. This can be a hostname or IP
                          address. Note: use ``port`` to set the port.
                        "port": 0,  # Optional. The port to
                          redirect to.
                        "redirect_code": 0,  # Optional. The
                          redirect code to use. Defaults to ``302``. Supported values
                          are 300, 301, 302, 303, 304, 307, 308.
                        "scheme": "str",  # Optional. The
                          scheme to redirect to. Supported values are ``http`` or
                          ``https``. Default: ``https``.
                        "uri": "str"  # Optional. An optional
                          URI path to redirect to. Note: if this is specified the whole
                          URI of the original request will be overwritten to this
                          value, irrespective of the original request URI being
                          matched.
                    }
                }
            ]
        },
        "jobs": [
            {
                "autoscaling": {
                    "max_instance_count": 0,  # Optional. The
                      maximum amount of instances for this component. Must be more than
                      min_instance_count.
                    "metrics": {
                        "cpu": {
                            "percent": 80  # Optional.
                              Default value is 80. The average target CPU utilization
                              for the component.
                        }
                    },
                    "min_instance_count": 0  # Optional. The
                      minimum amount of instances for this component. Must be less than
                      max_instance_count.
                },
                "build_command": "str",  # Optional. An optional
                  build command to run while building this component from source.
                "dockerfile_path": "str",  # Optional. The path to
                  the Dockerfile relative to the root of the repo. If set, it will be
                  used to build this component. Otherwise, App Platform will attempt to
                  build it using buildpacks.
                "environment_slug": "str",  # Optional. An
                  environment slug describing the type of this app. For a full list,
                  please refer to `the product documentation
                  <https://docs.digitalocean.com/products/app-platform/>`_.
                "envs": [
                    {
                        "key": "str",  # The variable name.
                          Required.
                        "scope": "RUN_AND_BUILD_TIME",  #
                          Optional. Default value is "RUN_AND_BUILD_TIME". * RUN_TIME:
                          Made available only at run-time * BUILD_TIME: Made available
                          only at build-time * RUN_AND_BUILD_TIME: Made available at
                          both build and run-time. Known values are: "UNSET",
                          "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                        "type": "GENERAL",  # Optional.
                          Default value is "GENERAL". * GENERAL: A plain-text
                          environment variable * SECRET: A secret encrypted environment
                          variable. Known values are: "GENERAL" and "SECRET".
                        "value": "str"  # Optional. The
                          value. If the type is ``SECRET``"" , the value will be
                          encrypted on first submission. On following submissions, the
                          encrypted value should be used.
                    }
                ],
                "git": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "repo_clone_url": "str"  # Optional. The
                      clone URL of the repo. Example:
                      ``https://github.com/digitalocean/sample-golang.git``.
                },
                "github": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "gitlab": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "image": {
                    "deploy_on_push": {
                        "enabled": bool  # Optional. Whether
                          to automatically deploy new images. Can only be used for
                          images hosted in DOCR and can only be used with an image tag,
                          not a specific digest.
                    },
                    "digest": "str",  # Optional. The image
                      digest. Cannot be specified if tag is provided.
                    "registry": "str",  # Optional. The registry
                      name. Must be left empty for the ``DOCR`` registry type.
                    "registry_credentials": "str",  # Optional.
                      The credentials to be able to pull the image. The value will be
                      encrypted on first submission. On following submissions, the
                      encrypted value should be used.   * "$username:$access_token" for
                      registries of type ``DOCKER_HUB``. * "$username:$access_token"
                      for registries of type ``GHCR``.
                    "registry_type": "str",  # Optional. *
                      DOCKER_HUB: The DockerHub container registry type. * DOCR: The
                      DigitalOcean container registry type. * GHCR: The Github
                      container registry type. Known values are: "DOCKER_HUB", "DOCR",
                      and "GHCR".
                    "repository": "str",  # Optional. The
                      repository name.
                    "tag": "latest"  # Optional. Default value is
                      "latest". The repository tag. Defaults to ``latest`` if not
                      provided and no digest is provided. Cannot be specified if digest
                      is provided.
                },
                "instance_count": 1,  # Optional. Default value is 1.
                  The amount of instances that this component should be scaled to.
                  Default: 1. Must not be set if autoscaling is used.
                "instance_size_slug": "apps-s-1vcpu-0.5gb",  #
                  Optional. Default value is "apps-s-1vcpu-0.5gb". The instance size to
                  use for this component. Default: ``apps-s-1vcpu-0.5gb``. Known values
                  are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                  "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                  "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                  "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                  "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                "kind": "UNSPECIFIED",  # Optional. Default value is
                  "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                  "PRE_DEPLOY", "POST_DEPLOY", and "FAILED_DEPLOY".
                "log_destinations": [
                    {
                        "name": "str",  # Required.
                        "datadog": {
                            "api_key": "str",  # Datadog
                              API key. Required.
                            "endpoint": "str"  #
                              Optional. Datadog HTTP log intake endpoint.
                        },
                        "logtail": {
                            "token": "str"  # Optional.
                              Logtail token.
                        },
                        "open_search": {
                            "basic_auth": {
                                "password": {},  #
                                  Optional. Password for user defined in User. Is
                                  required when ``endpoint`` is set. Cannot be set if
                                  using a DigitalOcean DBaaS OpenSearch cluster.
                                "user": "str"  #
                                  Optional. Username to authenticate with. Only
                                  required when ``endpoint`` is set. Defaults to
                                  ``doadmin`` when ``cluster_name`` is set.
                            },
                            "cluster_name": "str",  #
                              Optional. The name of a DigitalOcean DBaaS OpenSearch
                              cluster to use as a log forwarding destination. Cannot be
                              specified if ``endpoint`` is also specified.
                            "endpoint": "str",  #
                              Optional. OpenSearch API Endpoint. Only HTTPS is
                              supported. Format: https://:code:`<host>`::code:`<port>`.
                              Cannot be specified if ``cluster_name`` is also
                              specified.
                            "index_name": "logs"  #
                              Optional. Default value is "logs". The index name to use
                              for the logs. If not set, the default index name is
                              "logs".
                        },
                        "papertrail": {
                            "endpoint": "str"  #
                              Papertrail syslog endpoint. Required.
                        }
                    }
                ],
                "name": "str",  # Optional. The name. Must be unique
                  across all components within the same app.
                "run_command": "str",  # Optional. An optional run
                  command to override the component's default.
                "source_dir": "str",  # Optional. An optional path to
                  the working directory to use for the build. For Dockerfile builds,
                  this will be used as the build context. Must be relative to the root
                  of the repo.
                "termination": {
                    "grace_period_seconds": 0  # Optional. The
                      number of seconds to wait between sending a TERM signal to a
                      container and issuing a KILL which causes immediate shutdown.
                      (Default 120).
                }
            }
        ],
        "region": "str",  # Optional. The slug form of the geographical
          origin of the app. Default: ``nearest available``. Known values are: "ams",
          "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and "syd".
        "services": [
            {
                "autoscaling": {
                    "max_instance_count": 0,  # Optional. The
                      maximum amount of instances for this component. Must be more than
                      min_instance_count.
                    "metrics": {
                        "cpu": {
                            "percent": 80  # Optional.
                              Default value is 80. The average target CPU utilization
                              for the component.
                        }
                    },
                    "min_instance_count": 0  # Optional. The
                      minimum amount of instances for this component. Must be less than
                      max_instance_count.
                },
                "build_command": "str",  # Optional. An optional
                  build command to run while building this component from source.
                "cors": {
                    "allow_credentials": bool,  # Optional.
                      Whether browsers should expose the response to the client-side
                      JavaScript code when the request"u2019s credentials mode is
                      include. This configures the ``Access-Control-Allow-Credentials``
                      header.
                    "allow_headers": [
                        "str"  # Optional. The set of allowed
                          HTTP request headers. This configures the
                          ``Access-Control-Allow-Headers`` header.
                    ],
                    "allow_methods": [
                        "str"  # Optional. The set of allowed
                          HTTP methods. This configures the
                          ``Access-Control-Allow-Methods`` header.
                    ],
                    "allow_origins": [
                        {
                            "exact": "str",  # Optional.
                              Exact string match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "prefix": "str",  # Optional.
                              Prefix-based match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "regex": "str"  # Optional.
                              RE2 style regex-based match. Only 1 of ``exact``"" ,
                              ``prefix``"" , or ``regex`` must be set. For more
                              information about RE2 syntax, see:
                              https://github.com/google/re2/wiki/Syntax.
                        }
                    ],
                    "expose_headers": [
                        "str"  # Optional. The set of HTTP
                          response headers that browsers are allowed to access. This
                          configures the ``Access-Control-Expose-Headers`` header.
                    ],
                    "max_age": "str"  # Optional. An optional
                      duration specifying how long browsers can cache the results of a
                      preflight request. This configures the ``Access-Control-Max-Age``
                      header.
                },
                "dockerfile_path": "str",  # Optional. The path to
                  the Dockerfile relative to the root of the repo. If set, it will be
                  used to build this component. Otherwise, App Platform will attempt to
                  build it using buildpacks.
                "environment_slug": "str",  # Optional. An
                  environment slug describing the type of this app. For a full list,
                  please refer to `the product documentation
                  <https://docs.digitalocean.com/products/app-platform/>`_.
                "envs": [
                    {
                        "key": "str",  # The variable name.
                          Required.
                        "scope": "RUN_AND_BUILD_TIME",  #
                          Optional. Default value is "RUN_AND_BUILD_TIME". * RUN_TIME:
                          Made available only at run-time * BUILD_TIME: Made available
                          only at build-time * RUN_AND_BUILD_TIME: Made available at
                          both build and run-time. Known values are: "UNSET",
                          "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                        "type": "GENERAL",  # Optional.
                          Default value is "GENERAL". * GENERAL: A plain-text
                          environment variable * SECRET: A secret encrypted environment
                          variable. Known values are: "GENERAL" and "SECRET".
                        "value": "str"  # Optional. The
                          value. If the type is ``SECRET``"" , the value will be
                          encrypted on first submission. On following submissions, the
                          encrypted value should be used.
                    }
                ],
                "git": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "repo_clone_url": "str"  # Optional. The
                      clone URL of the repo. Example:
                      ``https://github.com/digitalocean/sample-golang.git``.
                },
                "github": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "gitlab": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "health_check": {
                    "failure_threshold": 0,  # Optional. The
                      number of failed health checks before considered unhealthy.
                    "http_path": "str",  # Optional. The route
                      path used for the HTTP health check ping. If not set, the HTTP
                      health check will be disabled and a TCP health check used
                      instead.
                    "initial_delay_seconds": 0,  # Optional. The
                      number of seconds to wait before beginning health checks.
                    "period_seconds": 0,  # Optional. The number
                      of seconds to wait between health checks.
                    "port": 0,  # Optional. 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.
                    "success_threshold": 0,  # Optional. The
                      number of successful health checks before considered healthy.
                    "timeout_seconds": 0  # Optional. The number
                      of seconds after which the check times out.
                },
                "http_port": 0,  # Optional. The internal port on
                  which this service's run command will listen. Default: 8080 If there
                  is not an environment variable with the name ``PORT``"" , one will be
                  automatically added with its value set to the value of this field.
                "image": {
                    "deploy_on_push": {
                        "enabled": bool  # Optional. Whether
                          to automatically deploy new images. Can only be used for
                          images hosted in DOCR and can only be used with an image tag,
                          not a specific digest.
                    },
                    "digest": "str",  # Optional. The image
                      digest. Cannot be specified if tag is provided.
                    "registry": "str",  # Optional. The registry
                      name. Must be left empty for the ``DOCR`` registry type.
                    "registry_credentials": "str",  # Optional.
                      The credentials to be able to pull the image. The value will be
                      encrypted on first submission. On following submissions, the
                      encrypted value should be used.   * "$username:$access_token" for
                      registries of type ``DOCKER_HUB``. * "$username:$access_token"
                      for registries of type ``GHCR``.
                    "registry_type": "str",  # Optional. *
                      DOCKER_HUB: The DockerHub container registry type. * DOCR: The
                      DigitalOcean container registry type. * GHCR: The Github
                      container registry type. Known values are: "DOCKER_HUB", "DOCR",
                      and "GHCR".
                    "repository": "str",  # Optional. The
                      repository name.
                    "tag": "latest"  # Optional. Default value is
                      "latest". The repository tag. Defaults to ``latest`` if not
                      provided and no digest is provided. Cannot be specified if digest
                      is provided.
                },
                "instance_count": 1,  # Optional. Default value is 1.
                  The amount of instances that this component should be scaled to.
                  Default: 1. Must not be set if autoscaling is used.
                "instance_size_slug": "apps-s-1vcpu-0.5gb",  #
                  Optional. Default value is "apps-s-1vcpu-0.5gb". The instance size to
                  use for this component. Default: ``apps-s-1vcpu-0.5gb``. Known values
                  are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                  "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                  "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                  "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                  "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                "internal_ports": [
                    0  # Optional. The ports on which this
                      service will listen for internal traffic.
                ],
                "log_destinations": [
                    {
                        "name": "str",  # Required.
                        "datadog": {
                            "api_key": "str",  # Datadog
                              API key. Required.
                            "endpoint": "str"  #
                              Optional. Datadog HTTP log intake endpoint.
                        },
                        "logtail": {
                            "token": "str"  # Optional.
                              Logtail token.
                        },
                        "open_search": {
                            "basic_auth": {
                                "password": {},  #
                                  Optional. Password for user defined in User. Is
                                  required when ``endpoint`` is set. Cannot be set if
                                  using a DigitalOcean DBaaS OpenSearch cluster.
                                "user": "str"  #
                                  Optional. Username to authenticate with. Only
                                  required when ``endpoint`` is set. Defaults to
                                  ``doadmin`` when ``cluster_name`` is set.
                            },
                            "cluster_name": "str",  #
                              Optional. The name of a DigitalOcean DBaaS OpenSearch
                              cluster to use as a log forwarding destination. Cannot be
                              specified if ``endpoint`` is also specified.
                            "endpoint": "str",  #
                              Optional. OpenSearch API Endpoint. Only HTTPS is
                              supported. Format: https://:code:`<host>`::code:`<port>`.
                              Cannot be specified if ``cluster_name`` is also
                              specified.
                            "index_name": "logs"  #
                              Optional. Default value is "logs". The index name to use
                              for the logs. If not set, the default index name is
                              "logs".
                        },
                        "papertrail": {
                            "endpoint": "str"  #
                              Papertrail syslog endpoint. Required.
                        }
                    }
                ],
                "name": "str",  # Optional. The name. Must be unique
                  across all components within the same app.
                "routes": [
                    {
                        "path": "str",  # Optional.
                          (Deprecated - Use Ingress Rules instead). An HTTP path
                          prefix. Paths must start with / and must be unique across all
                          components within an app.
                        "preserve_path_prefix": bool  #
                          Optional. An optional 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. For example, a component with ``path=/api``
                          will have requests to ``/api/list`` trimmed to ``/list``. If
                          this value is ``true``"" , the path will remain
                          ``/api/list``.
                    }
                ],
                "run_command": "str",  # Optional. An optional run
                  command to override the component's default.
                "source_dir": "str",  # Optional. An optional path to
                  the working directory to use for the build. For Dockerfile builds,
                  this will be used as the build context. Must be relative to the root
                  of the repo.
                "termination": {
                    "drain_seconds": 0,  # Optional. 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).
                    "grace_period_seconds": 0  # Optional. The
                      number of seconds to wait between sending a TERM signal to a
                      container and issuing a KILL which causes immediate shutdown.
                      (Default 120).
                }
            }
        ],
        "static_sites": [
            {
                "build_command": "str",  # Optional. An optional
                  build command to run while building this component from source.
                "catchall_document": "str",  # Optional. The name of
                  the document to use as the fallback for any requests to documents
                  that are not found when serving this static site. Only 1 of
                  ``catchall_document`` or ``error_document`` can be set.
                "cors": {
                    "allow_credentials": bool,  # Optional.
                      Whether browsers should expose the response to the client-side
                      JavaScript code when the request"u2019s credentials mode is
                      include. This configures the ``Access-Control-Allow-Credentials``
                      header.
                    "allow_headers": [
                        "str"  # Optional. The set of allowed
                          HTTP request headers. This configures the
                          ``Access-Control-Allow-Headers`` header.
                    ],
                    "allow_methods": [
                        "str"  # Optional. The set of allowed
                          HTTP methods. This configures the
                          ``Access-Control-Allow-Methods`` header.
                    ],
                    "allow_origins": [
                        {
                            "exact": "str",  # Optional.
                              Exact string match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "prefix": "str",  # Optional.
                              Prefix-based match. Only 1 of ``exact``"" , ``prefix``""
                              , or ``regex`` must be set.
                            "regex": "str"  # Optional.
                              RE2 style regex-based match. Only 1 of ``exact``"" ,
                              ``prefix``"" , or ``regex`` must be set. For more
                              information about RE2 syntax, see:
                              https://github.com/google/re2/wiki/Syntax.
                        }
                    ],
                    "expose_headers": [
                        "str"  # Optional. The set of HTTP
                          response headers that browsers are allowed to access. This
                          configures the ``Access-Control-Expose-Headers`` header.
                    ],
                    "max_age": "str"  # Optional. An optional
                      duration specifying how long browsers can cache the results of a
                      preflight request. This configures the ``Access-Control-Max-Age``
                      header.
                },
                "dockerfile_path": "str",  # Optional. The path to
                  the Dockerfile relative to the root of the repo. If set, it will be
                  used to build this component. Otherwise, App Platform will attempt to
                  build it using buildpacks.
                "environment_slug": "str",  # Optional. An
                  environment slug describing the type of this app. For a full list,
                  please refer to `the product documentation
                  <https://docs.digitalocean.com/products/app-platform/>`_.
                "envs": [
                    {
                        "key": "str",  # The variable name.
                          Required.
                        "scope": "RUN_AND_BUILD_TIME",  #
                          Optional. Default value is "RUN_AND_BUILD_TIME". * RUN_TIME:
                          Made available only at run-time * BUILD_TIME: Made available
                          only at build-time * RUN_AND_BUILD_TIME: Made available at
                          both build and run-time. Known values are: "UNSET",
                          "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                        "type": "GENERAL",  # Optional.
                          Default value is "GENERAL". * GENERAL: A plain-text
                          environment variable * SECRET: A secret encrypted environment
                          variable. Known values are: "GENERAL" and "SECRET".
                        "value": "str"  # Optional. The
                          value. If the type is ``SECRET``"" , the value will be
                          encrypted on first submission. On following submissions, the
                          encrypted value should be used.
                    }
                ],
                "error_document": "404.html",  # Optional. Default
                  value is "404.html". The name of the error document to use when
                  serving this static site. Default: 404.html. If no such file exists
                  within the built assets, App Platform will supply one.
                "git": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "repo_clone_url": "str"  # Optional. The
                      clone URL of the repo. Example:
                      ``https://github.com/digitalocean/sample-golang.git``.
                },
                "github": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "gitlab": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "image": {
                    "deploy_on_push": {
                        "enabled": bool  # Optional. Whether
                          to automatically deploy new images. Can only be used for
                          images hosted in DOCR and can only be used with an image tag,
                          not a specific digest.
                    },
                    "digest": "str",  # Optional. The image
                      digest. Cannot be specified if tag is provided.
                    "registry": "str",  # Optional. The registry
                      name. Must be left empty for the ``DOCR`` registry type.
                    "registry_credentials": "str",  # Optional.
                      The credentials to be able to pull the image. The value will be
                      encrypted on first submission. On following submissions, the
                      encrypted value should be used.   * "$username:$access_token" for
                      registries of type ``DOCKER_HUB``. * "$username:$access_token"
                      for registries of type ``GHCR``.
                    "registry_type": "str",  # Optional. *
                      DOCKER_HUB: The DockerHub container registry type. * DOCR: The
                      DigitalOcean container registry type. * GHCR: The Github
                      container registry type. Known values are: "DOCKER_HUB", "DOCR",
                      and "GHCR".
                    "repository": "str",  # Optional. The
                      repository name.
                    "tag": "latest"  # Optional. Default value is
                      "latest". The repository tag. Defaults to ``latest`` if not
                      provided and no digest is provided. Cannot be specified if digest
                      is provided.
                },
                "index_document": "index.html",  # Optional. Default
                  value is "index.html". The name of the index document to use when
                  serving this static site. Default: index.html.
                "log_destinations": [
                    {
                        "name": "str",  # Required.
                        "datadog": {
                            "api_key": "str",  # Datadog
                              API key. Required.
                            "endpoint": "str"  #
                              Optional. Datadog HTTP log intake endpoint.
                        },
                        "logtail": {
                            "token": "str"  # Optional.
                              Logtail token.
                        },
                        "open_search": {
                            "basic_auth": {
                                "password": {},  #
                                  Optional. Password for user defined in User. Is
                                  required when ``endpoint`` is set. Cannot be set if
                                  using a DigitalOcean DBaaS OpenSearch cluster.
                                "user": "str"  #
                                  Optional. Username to authenticate with. Only
                                  required when ``endpoint`` is set. Defaults to
                                  ``doadmin`` when ``cluster_name`` is set.
                            },
                            "cluster_name": "str",  #
                              Optional. The name of a DigitalOcean DBaaS OpenSearch
                              cluster to use as a log forwarding destination. Cannot be
                              specified if ``endpoint`` is also specified.
                            "endpoint": "str",  #
                              Optional. OpenSearch API Endpoint. Only HTTPS is
                              supported. Format: https://:code:`<host>`::code:`<port>`.
                              Cannot be specified if ``cluster_name`` is also
                              specified.
                            "index_name": "logs"  #
                              Optional. Default value is "logs". The index name to use
                              for the logs. If not set, the default index name is
                              "logs".
                        },
                        "papertrail": {
                            "endpoint": "str"  #
                              Papertrail syslog endpoint. Required.
                        }
                    }
                ],
                "name": "str",  # Optional. The name. Must be unique
                  across all components within the same app.
                "output_dir": "str",  # Optional. 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``"" ,
                  ``build``.
                "routes": [
                    {
                        "path": "str",  # Optional.
                          (Deprecated - Use Ingress Rules instead). An HTTP path
                          prefix. Paths must start with / and must be unique across all
                          components within an app.
                        "preserve_path_prefix": bool  #
                          Optional. An optional 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. For example, a component with ``path=/api``
                          will have requests to ``/api/list`` trimmed to ``/list``. If
                          this value is ``true``"" , the path will remain
                          ``/api/list``.
                    }
                ],
                "run_command": "str",  # Optional. An optional run
                  command to override the component's default.
                "source_dir": "str"  # Optional. An optional path to
                  the working directory to use for the build. For Dockerfile builds,
                  this will be used as the build context. Must be relative to the root
                  of the repo.
            }
        ],
        "workers": [
            {
                "autoscaling": {
                    "max_instance_count": 0,  # Optional. The
                      maximum amount of instances for this component. Must be more than
                      min_instance_count.
                    "metrics": {
                        "cpu": {
                            "percent": 80  # Optional.
                              Default value is 80. The average target CPU utilization
                              for the component.
                        }
                    },
                    "min_instance_count": 0  # Optional. The
                      minimum amount of instances for this component. Must be less than
                      max_instance_count.
                },
                "build_command": "str",  # Optional. An optional
                  build command to run while building this component from source.
                "dockerfile_path": "str",  # Optional. The path to
                  the Dockerfile relative to the root of the repo. If set, it will be
                  used to build this component. Otherwise, App Platform will attempt to
                  build it using buildpacks.
                "environment_slug": "str",  # Optional. An
                  environment slug describing the type of this app. For a full list,
                  please refer to `the product documentation
                  <https://docs.digitalocean.com/products/app-platform/>`_.
                "envs": [
                    {
                        "key": "str",  # The variable name.
                          Required.
                        "scope": "RUN_AND_BUILD_TIME",  #
                          Optional. Default value is "RUN_AND_BUILD_TIME". * RUN_TIME:
                          Made available only at run-time * BUILD_TIME: Made available
                          only at build-time * RUN_AND_BUILD_TIME: Made available at
                          both build and run-time. Known values are: "UNSET",
                          "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                        "type": "GENERAL",  # Optional.
                          Default value is "GENERAL". * GENERAL: A plain-text
                          environment variable * SECRET: A secret encrypted environment
                          variable. Known values are: "GENERAL" and "SECRET".
                        "value": "str"  # Optional. The
                          value. If the type is ``SECRET``"" , the value will be
                          encrypted on first submission. On following submissions, the
                          encrypted value should be used.
                    }
                ],
                "git": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "repo_clone_url": "str"  # Optional. The
                      clone URL of the repo. Example:
                      ``https://github.com/digitalocean/sample-golang.git``.
                },
                "github": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "gitlab": {
                    "branch": "str",  # Optional. The name of the
                      branch to use.
                    "deploy_on_push": bool,  # Optional. Whether
                      to automatically deploy new commits made to the repo.
                    "repo": "str"  # Optional. The name of the
                      repo in the format owner/repo. Example:
                      ``digitalocean/sample-golang``.
                },
                "image": {
                    "deploy_on_push": {
                        "enabled": bool  # Optional. Whether
                          to automatically deploy new images. Can only be used for
                          images hosted in DOCR and can only be used with an image tag,
                          not a specific digest.
                    },
                    "digest": "str",  # Optional. The image
                      digest. Cannot be specified if tag is provided.
                    "registry": "str",  # Optional. The registry
                      name. Must be left empty for the ``DOCR`` registry type.
                    "registry_credentials": "str",  # Optional.
                      The credentials to be able to pull the image. The value will be
                      encrypted on first submission. On following submissions, the
                      encrypted value should be used.   * "$username:$access_token" for
                      registries of type ``DOCKER_HUB``. * "$username:$access_token"
                      for registries of type ``GHCR``.
                    "registry_type": "str",  # Optional. *
                      DOCKER_HUB: The DockerHub container registry type. * DOCR: The
                      DigitalOcean container registry type. * GHCR: The Github
                      container registry type. Known values are: "DOCKER_HUB", "DOCR",
                      and "GHCR".
                    "repository": "str",  # Optional. The
                      repository name.
                    "tag": "latest"  # Optional. Default value is
                      "latest". The repository tag. Defaults to ``latest`` if not
                      provided and no digest is provided. Cannot be specified if digest
                      is provided.
                },
                "instance_count": 1,  # Optional. Default value is 1.
                  The amount of instances that this component should be scaled to.
                  Default: 1. Must not be set if autoscaling is used.
                "instance_size_slug": "apps-s-1vcpu-0.5gb",  #
                  Optional. Default value is "apps-s-1vcpu-0.5gb". The instance size to
                  use for this component. Default: ``apps-s-1vcpu-0.5gb``. Known values
                  are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                  "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                  "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                  "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                  "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                "log_destinations": [
                    {
                        "name": "str",  # Required.
                        "datadog": {
                            "api_key": "str",  # Datadog
                              API key. Required.
                            "endpoint": "str"  #
                              Optional. Datadog HTTP log intake endpoint.
                        },
                        "logtail": {
                            "token": "str"  # Optional.
                              Logtail token.
                        },
                        "open_search": {
                            "basic_auth": {
                                "password": {},  #
                                  Optional. Password for user defined in User. Is
                                  required when ``endpoint`` is set. Cannot be set if
                                  using a DigitalOcean DBaaS OpenSearch cluster.
                                "user": "str"  #
                                  Optional. Username to authenticate with. Only
                                  required when ``endpoint`` is set. Defaults to
                                  ``doadmin`` when ``cluster_name`` is set.
                            },
                            "cluster_name": "str",  #
                              Optional. The name of a DigitalOcean DBaaS OpenSearch
                              cluster to use as a log forwarding destination. Cannot be
                              specified if ``endpoint`` is also specified.
                            "endpoint": "str",  #
                              Optional. OpenSearch API Endpoint. Only HTTPS is
                              supported. Format: https://:code:`<host>`::code:`<port>`.
                              Cannot be specified if ``cluster_name`` is also
                              specified.
                            "index_name": "logs"  #
                              Optional. Default value is "logs". The index name to use
                              for the logs. If not set, the default index name is
                              "logs".
                        },
                        "papertrail": {
                            "endpoint": "str"  #
                              Papertrail syslog endpoint. Required.
                        }
                    }
                ],
                "name": "str",  # Optional. The name. Must be unique
                  across all components within the same app.
                "run_command": "str",  # Optional. An optional run
                  command to override the component's default.
                "source_dir": "str",  # Optional. An optional path to
                  the working directory to use for the build. For Dockerfile builds,
                  this will be used as the build context. Must be relative to the root
                  of the repo.
                "termination": {
                    "grace_period_seconds": 0  # Optional. The
                      number of seconds to wait between sending a TERM signal to a
                      container and issuing a KILL which causes immediate shutdown.
                      (Default 120).
                }
            }
        ]
    },
    "project_id": "str"  # Optional. The ID of the project the app should be
      assigned to. If omitted, it will be assigned to your default project.
}

# response body for status code(s): 200
response == {
    "app": {
        "spec": {
            "name": "str",  # The name of the app. Must be unique across
              all apps in the same account. Required.
            "databases": [
                {
                    "name": "str",  # The database's name. The
                      name must be unique across all components within the same app and
                      cannot use capital letters. Required.
                    "cluster_name": "str",  # Optional. The name
                      of the underlying DigitalOcean DBaaS cluster. This is required
                      for production databases. For dev databases, if cluster_name is
                      not set, a new cluster will be provisioned.
                    "db_name": "str",  # Optional. The name of
                      the MySQL or PostgreSQL database to configure.
                    "db_user": "str",  # Optional. The name of
                      the MySQL or PostgreSQL user to configure.
                    "engine": "UNSET",  # Optional. Default value
                      is "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis *
                      MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known
                      values are: "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA",
                      and "OPENSEARCH".
                    "production": bool,  # Optional. Whether this
                      is a production or dev database.
                    "version": "str"  # Optional. The version of
                      the database engine.
                }
            ],
            "domains": [
                {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                }
            ],
            "egress": {
                "type": "AUTOASSIGN"  # Optional. Default value is
                  "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
                  "DEDICATED_IP".
            },
            "functions": [
                {
                    "name": "str",  # The name. Must be unique
                      across all components within the same app. Required.
                    "alerts": [
                        {
                            "disabled": bool,  #
                              Optional. Is the alert disabled?.
                            "operator":
                              "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                              "UNSPECIFIED_OPERATOR". Known values are:
                              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
                            "rule": "UNSPECIFIED_RULE",
                              # Optional. Default value is "UNSPECIFIED_RULE". Known
                              values are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                              "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                              "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                              "FUNCTIONS_ACTIVATION_COUNT",
                              "FUNCTIONS_AVERAGE_DURATION_MS",
                              "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                              "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                              "FUNCTIONS_ERROR_COUNT", and
                              "FUNCTIONS_GB_RATE_PER_SECOND".
                            "value": 0.0,  # Optional.
                              Threshold value for alert.
                            "window":
                              "UNSPECIFIED_WINDOW"  # Optional. Default value is
                              "UNSPECIFIED_WINDOW". Known values are:
                              "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                              "THIRTY_MINUTES", and "ONE_HOUR".
                        }
                    ],
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "ingress": {
                "rules": [
                    {
                        "component": {
                            "name": "str",  # The name of
                              the component to route to. Required.
                            "preserve_path_prefix":
                              "str",  # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``. Note: this is not applicable for
                              Functions Components and is mutually exclusive with
                              ``rewrite``.
                            "rewrite": "str"  # Optional.
                              An optional field that will rewrite the path of the
                              component to be what is specified here. By default, the
                              HTTP request path will be trimmed from the left when
                              forwarded to the component. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If you specified the rewrite to be
                              ``/v1/``"" , requests to ``/api/list`` would be rewritten
                              to ``/v1/list``. Note: this is mutually exclusive with
                              ``preserve_path_prefix``.
                        },
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "match": {
                            "path": {
                                "prefix": "str"  #
                                  Prefix-based match. For example, ``/api`` will match
                                  ``/api``"" , ``/api/``"" , and any nested paths such
                                  as ``/api/v1/endpoint``. Required.
                            }
                        },
                        "redirect": {
                            "authority": "str",  #
                              Optional. The authority/host to redirect to. This can be
                              a hostname or IP address. Note: use ``port`` to set the
                              port.
                            "port": 0,  # Optional. The
                              port to redirect to.
                            "redirect_code": 0,  #
                              Optional. The redirect code to use. Defaults to ``302``.
                              Supported values are 300, 301, 302, 303, 304, 307, 308.
                            "scheme": "str",  # Optional.
                              The scheme to redirect to. Supported values are ``http``
                              or ``https``. Default: ``https``.
                            "uri": "str"  # Optional. An
                              optional URI path to redirect to. Note: if this is
                              specified the whole URI of the original request will be
                              overwritten to this value, irrespective of the original
                              request URI being matched.
                        }
                    }
                ]
            },
            "jobs": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "kind": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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. Known values
                      are: "UNSPECIFIED", "PRE_DEPLOY", "POST_DEPLOY", and
                      "FAILED_DEPLOY".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "region": "str",  # Optional. The slug form of the
              geographical origin of the app. Default: ``nearest available``. Known
              values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and
              "syd".
            "services": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "health_check": {
                        "failure_threshold": 0,  # Optional.
                          The number of failed health checks before considered
                          unhealthy.
                        "http_path": "str",  # Optional. The
                          route path used for the HTTP health check ping. If not set,
                          the HTTP health check will be disabled and a TCP health check
                          used instead.
                        "initial_delay_seconds": 0,  #
                          Optional. The number of seconds to wait before beginning
                          health checks.
                        "period_seconds": 0,  # Optional. The
                          number of seconds to wait between health checks.
                        "port": 0,  # Optional. 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.
                        "success_threshold": 0,  # Optional.
                          The number of successful health checks before considered
                          healthy.
                        "timeout_seconds": 0  # Optional. The
                          number of seconds after which the check times out.
                    },
                    "http_port": 0,  # Optional. The internal
                      port on which this service's run command will listen. Default:
                      8080 If there is not an environment variable with the name
                      ``PORT``"" , one will be automatically added with its value set
                      to the value of this field.
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "internal_ports": [
                        0  # Optional. The ports on which
                          this service will listen for internal traffic.
                    ],
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "drain_seconds": 0,  # Optional. 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).
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "static_sites": [
                {
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "catchall_document": "str",  # Optional. The
                      name of the document to use as the fallback for any requests to
                      documents that are not found when serving this static site. Only
                      1 of ``catchall_document`` or ``error_document`` can be set.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "error_document": "404.html",  # Optional.
                      Default value is "404.html". The name of the error document to
                      use when serving this static site. Default: 404.html. If no such
                      file exists within the built assets, App Platform will supply
                      one.
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "index_document": "index.html",  # Optional.
                      Default value is "index.html". The name of the index document to
                      use when serving this static site. Default: index.html.
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "output_dir": "str",  # Optional. 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``"" , ``build``.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "workers": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ]
        },
        "active_deployment": {
            "cause": "str",  # Optional. What caused this deployment to
              be created.
            "cloned_from": "str",  # Optional. The ID of a previous
              deployment that this deployment was cloned from.
            "created_at": "2020-02-20 00:00:00",  # Optional. The
              creation time of the deployment.
            "functions": [
                {
                    "name": "str",  # Optional. The name of this
                      functions component.
                    "namespace": "str",  # Optional. The
                      namespace where the functions are deployed.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      functions component.
                }
            ],
            "id": "str",  # Optional. The ID of the deployment.
            "jobs": [
                {
                    "name": "str",  # Optional. The name of this
                      job.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this job.
                }
            ],
            "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN".
              Known values are: "UNKNOWN", "PENDING_BUILD", "BUILDING",
              "PENDING_DEPLOY", "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and
              "CANCELED".
            "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional.
              When the deployment phase was last updated.
            "progress": {
                "error_steps": 0,  # Optional. Number of unsuccessful
                  steps.
                "pending_steps": 0,  # Optional. Number of pending
                  steps.
                "running_steps": 0,  # Optional. Number of currently
                  running steps.
                "steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "success_steps": 0,  # Optional. Number of successful
                  steps.
                "summary_steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "total_steps": 0  # Optional. Total number of steps.
            },
            "services": [
                {
                    "name": "str",  # Optional. The name of this
                      service.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      service.
                }
            ],
            "spec": {
                "name": "str",  # The name of the app. Must be unique
                  across all apps in the same account. Required.
                "databases": [
                    {
                        "name": "str",  # The database's
                          name. The name must be unique across all components within
                          the same app and cannot use capital letters. Required.
                        "cluster_name": "str",  # Optional.
                          The name of the underlying DigitalOcean DBaaS cluster. This
                          is required for production databases. For dev databases, if
                          cluster_name is not set, a new cluster will be provisioned.
                        "db_name": "str",  # Optional. The
                          name of the MySQL or PostgreSQL database to configure.
                        "db_user": "str",  # Optional. The
                          name of the MySQL or PostgreSQL user to configure.
                        "engine": "UNSET",  # Optional.
                          Default value is "UNSET". * MYSQL: MySQL * PG: PostgreSQL *
                          REDIS: Redis * MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH:
                          OpenSearch. Known values are: "UNSET", "MYSQL", "PG",
                          "REDIS", "MONGODB", "KAFKA", and "OPENSEARCH".
                        "production": bool,  # Optional.
                          Whether this is a production or dev database.
                        "version": "str"  # Optional. The
                          version of the database engine.
                    }
                ],
                "domains": [
                    {
                        "domain": "str",  # The hostname for
                          the domain. Required.
                        "minimum_tls_version": "str",  #
                          Optional. The minimum version of TLS a client application can
                          use to access resources for the domain.  Must be one of the
                          following values wrapped within quotations: ``"1.2"`` or
                          ``"1.3"``. Known values are: "1.2" and "1.3".
                        "type": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "DEFAULT", "PRIMARY", and "ALIAS".
                        "wildcard": bool,  # Optional.
                          Indicates whether the domain includes all sub-domains, in
                          addition to the given domain.
                        "zone": "str"  # Optional. Optional.
                          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.  For example, If the
                          domain you are adding is ``app.domain.com``"" , the zone
                          could be ``domain.com``.
                    }
                ],
                "egress": {
                    "type": "AUTOASSIGN"  # Optional. Default
                      value is "AUTOASSIGN". The app egress type. Known values are:
                      "AUTOASSIGN" and "DEDICATED_IP".
                },
                "functions": [
                    {
                        "name": "str",  # The name. Must be
                          unique across all components within the same app. Required.
                        "alerts": [
                            {
                                "disabled": bool,  #
                                  Optional. Is the alert disabled?.
                                "operator":
                                  "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                                  "UNSPECIFIED_OPERATOR". Known values are:
                                  "UNSPECIFIED_OPERATOR", "GREATER_THAN", and
                                  "LESS_THAN".
                                "rule":
                                  "UNSPECIFIED_RULE",  # Optional. Default value is
                                  "UNSPECIFIED_RULE". Known values are:
                                  "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                                  "MEM_UTILIZATION", "RESTART_COUNT",
                                  "DEPLOYMENT_FAILED", "DEPLOYMENT_LIVE",
                                  "DOMAIN_FAILED", "DOMAIN_LIVE",
                                  "FUNCTIONS_ACTIVATION_COUNT",
                                  "FUNCTIONS_AVERAGE_DURATION_MS",
                                  "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                                  "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                                  "FUNCTIONS_ERROR_COUNT", and
                                  "FUNCTIONS_GB_RATE_PER_SECOND".
                                "value": 0.0,  #
                                  Optional. Threshold value for alert.
                                "window":
                                  "UNSPECIFIED_WINDOW"  # Optional. Default value is
                                  "UNSPECIFIED_WINDOW". Known values are:
                                  "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                                  "THIRTY_MINUTES", and "ONE_HOUR".
                            }
                        ],
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "ingress": {
                    "rules": [
                        {
                            "component": {
                                "name": "str",  # The
                                  name of the component to route to. Required.
"preserve_path_prefix": "str",  # Optional. An
                                  optional 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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``. Note: this is not
                                  applicable for Functions Components and is mutually
                                  exclusive with ``rewrite``.
                                "rewrite": "str"  #
                                  Optional. An optional field that will rewrite the
                                  path of the component to be what is specified here.
                                  By default, the HTTP request path will be trimmed
                                  from the left when forwarded to the component. For
                                  example, a component with ``path=/api`` will have
                                  requests to ``/api/list`` trimmed to ``/list``. If
                                  you specified the rewrite to be ``/v1/``"" , requests
                                  to ``/api/list`` would be rewritten to ``/v1/list``.
                                  Note: this is mutually exclusive with
                                  ``preserve_path_prefix``.
                            },
                            "cors": {
                                "allow_credentials":
                                  bool,  # Optional. Whether browsers should expose the
                                  response to the client-side JavaScript code when the
                                  request"u2019s credentials mode is include. This
                                  configures the ``Access-Control-Allow-Credentials``
                                  header.
                                "allow_headers": [
                                    "str"  #
                                      Optional. The set of allowed HTTP request
                                      headers. This configures the
                                      ``Access-Control-Allow-Headers`` header.
                                ],
                                "allow_methods": [
                                    "str"  #
                                      Optional. The set of allowed HTTP methods. This
                                      configures the ``Access-Control-Allow-Methods``
                                      header.
                                ],
                                "allow_origins": [
                                    {
"exact": "str",  # Optional. Exact string
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"prefix": "str",  # Optional. Prefix-based
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"regex": "str"  # Optional. RE2 style
                                          regex-based match. Only 1 of ``exact``"" ,
                                          ``prefix``"" , or ``regex`` must be set. For
                                          more information about RE2 syntax, see:
                                          https://github.com/google/re2/wiki/Syntax.
                                    }
                                ],
                                "expose_headers": [
                                    "str"  #
                                      Optional. The set of HTTP response headers that
                                      browsers are allowed to access. This configures
                                      the ``Access-Control-Expose-Headers`` header.
                                ],
                                "max_age": "str"  #
                                  Optional. An optional duration specifying how long
                                  browsers can cache the results of a preflight
                                  request. This configures the
                                  ``Access-Control-Max-Age`` header.
                            },
                            "match": {
                                "path": {
                                    "prefix":
                                      "str"  # Prefix-based match. For example,
                                      ``/api`` will match ``/api``"" , ``/api/``"" ,
                                      and any nested paths such as
                                      ``/api/v1/endpoint``. Required.
                                }
                            },
                            "redirect": {
                                "authority": "str",
                                  # Optional. The authority/host to redirect to. This
                                  can be a hostname or IP address. Note: use ``port``
                                  to set the port.
                                "port": 0,  #
                                  Optional. The port to redirect to.
                                "redirect_code": 0,
                                  # Optional. The redirect code to use. Defaults to
                                  ``302``. Supported values are 300, 301, 302, 303,
                                  304, 307, 308.
                                "scheme": "str",  #
                                  Optional. The scheme to redirect to. Supported values
                                  are ``http`` or ``https``. Default: ``https``.
                                "uri": "str"  #
                                  Optional. An optional URI path to redirect to. Note:
                                  if this is specified the whole URI of the original
                                  request will be overwritten to this value,
                                  irrespective of the original request URI being
                                  matched.
                            }
                        }
                    ]
                },
                "jobs": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "kind": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "PRE_DEPLOY", "POST_DEPLOY", and "FAILED_DEPLOY".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "region": "str",  # Optional. The slug form of the
                  geographical origin of the app. Default: ``nearest available``. Known
                  values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon",
                  and "syd".
                "services": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "health_check": {
                            "failure_threshold": 0,  #
                              Optional. The number of failed health checks before
                              considered unhealthy.
                            "http_path": "str",  #
                              Optional. The route path used for the HTTP health check
                              ping. If not set, the HTTP health check will be disabled
                              and a TCP health check used instead.
                            "initial_delay_seconds": 0,
                              # Optional. The number of seconds to wait before
                              beginning health checks.
                            "period_seconds": 0,  #
                              Optional. The number of seconds to wait between health
                              checks.
                            "port": 0,  # Optional. 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.
                            "success_threshold": 0,  #
                              Optional. The number of successful health checks before
                              considered healthy.
                            "timeout_seconds": 0  #
                              Optional. The number of seconds after which the check
                              times out.
                        },
                        "http_port": 0,  # Optional. The
                          internal port on which this service's run command will
                          listen. Default: 8080 If there is not an environment variable
                          with the name ``PORT``"" , one will be automatically added
                          with its value set to the value of this field.
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "internal_ports": [
                            0  # Optional. The ports on
                              which this service will listen for internal traffic.
                        ],
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "drain_seconds": 0,  #
                              Optional. 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).
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "static_sites": [
                    {
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "catchall_document": "str",  #
                          Optional. The name of the document to use as the fallback for
                          any requests to documents that are not found when serving
                          this static site. Only 1 of ``catchall_document`` or
                          ``error_document`` can be set.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "error_document": "404.html",  #
                          Optional. Default value is "404.html". The name of the error
                          document to use when serving this static site. Default:
                          404.html. If no such file exists within the built assets, App
                          Platform will supply one.
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "index_document": "index.html",  #
                          Optional. Default value is "index.html". The name of the
                          index document to use when serving this static site. Default:
                          index.html.
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "output_dir": "str",  # Optional. 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``"" , ``build``.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "workers": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ]
            },
            "static_sites": [
                {
                    "name": "str",  # Optional. The name of this
                      static site.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this static
                      site.
                }
            ],
            "tier_slug": "str",  # Optional. The current pricing tier
              slug of the deployment.
            "updated_at": "2020-02-20 00:00:00",  # Optional. When the
              deployment was last updated.
            "workers": [
                {
                    "name": "str",  # Optional. The name of this
                      worker.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this worker.
                }
            ]
        },
        "created_at": "2020-02-20 00:00:00",  # Optional. The creation time
          of the app.
        "dedicated_ips": [
            {
                "id": "str",  # Optional. The ID of the dedicated
                  egress IP.
                "ip": "str",  # Optional. The IP address of the
                  dedicated egress IP.
                "status": "UNKNOWN"  # Optional. Default value is
                  "UNKNOWN". The status of the dedicated egress IP. Known values are:
                  "UNKNOWN", "ASSIGNING", "ASSIGNED", and "REMOVED".
            }
        ],
        "default_ingress": "str",  # Optional. The default hostname on which
          the app is accessible.
        "domains": [
            {
                "certificate_expires_at": "2020-02-20 00:00:00",  #
                  Optional. Current SSL certificate expiration time.
                "id": "str",  # Optional. The ID of the domain.
                "phase": "UNKNOWN",  # Optional. Default value is
                  "UNKNOWN". Known values are: "UNKNOWN", "PENDING", "CONFIGURING",
                  "ACTIVE", and "ERROR".
                "progress": {
                    "steps": [
                        {}  # Optional. The steps of the
                          domain's progress.
                    ]
                },
                "rotate_validation_records": bool,  # Optional.
                  Validation values have changed and require manual intervention.
                "spec": {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                },
                "validations": [
                    {
                        "txt_name": "str",  # Optional. TXT
                          record name.
                        "txt_value": "str"  # Optional. TXT
                          record value.
                    }
                ]
            }
        ],
        "id": "str",  # Optional. The ID of the application.
        "in_progress_deployment": {
            "cause": "str",  # Optional. What caused this deployment to
              be created.
            "cloned_from": "str",  # Optional. The ID of a previous
              deployment that this deployment was cloned from.
            "created_at": "2020-02-20 00:00:00",  # Optional. The
              creation time of the deployment.
            "functions": [
                {
                    "name": "str",  # Optional. The name of this
                      functions component.
                    "namespace": "str",  # Optional. The
                      namespace where the functions are deployed.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      functions component.
                }
            ],
            "id": "str",  # Optional. The ID of the deployment.
            "jobs": [
                {
                    "name": "str",  # Optional. The name of this
                      job.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this job.
                }
            ],
            "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN".
              Known values are: "UNKNOWN", "PENDING_BUILD", "BUILDING",
              "PENDING_DEPLOY", "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and
              "CANCELED".
            "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional.
              When the deployment phase was last updated.
            "progress": {
                "error_steps": 0,  # Optional. Number of unsuccessful
                  steps.
                "pending_steps": 0,  # Optional. Number of pending
                  steps.
                "running_steps": 0,  # Optional. Number of currently
                  running steps.
                "steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "success_steps": 0,  # Optional. Number of successful
                  steps.
                "summary_steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "total_steps": 0  # Optional. Total number of steps.
            },
            "services": [
                {
                    "name": "str",  # Optional. The name of this
                      service.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      service.
                }
            ],
            "spec": {
                "name": "str",  # The name of the app. Must be unique
                  across all apps in the same account. Required.
                "databases": [
                    {
                        "name": "str",  # The database's
                          name. The name must be unique across all components within
                          the same app and cannot use capital letters. Required.
                        "cluster_name": "str",  # Optional.
                          The name of the underlying DigitalOcean DBaaS cluster. This
                          is required for production databases. For dev databases, if
                          cluster_name is not set, a new cluster will be provisioned.
                        "db_name": "str",  # Optional. The
                          name of the MySQL or PostgreSQL database to configure.
                        "db_user": "str",  # Optional. The
                          name of the MySQL or PostgreSQL user to configure.
                        "engine": "UNSET",  # Optional.
                          Default value is "UNSET". * MYSQL: MySQL * PG: PostgreSQL *
                          REDIS: Redis * MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH:
                          OpenSearch. Known values are: "UNSET", "MYSQL", "PG",
                          "REDIS", "MONGODB", "KAFKA", and "OPENSEARCH".
                        "production": bool,  # Optional.
                          Whether this is a production or dev database.
                        "version": "str"  # Optional. The
                          version of the database engine.
                    }
                ],
                "domains": [
                    {
                        "domain": "str",  # The hostname for
                          the domain. Required.
                        "minimum_tls_version": "str",  #
                          Optional. The minimum version of TLS a client application can
                          use to access resources for the domain.  Must be one of the
                          following values wrapped within quotations: ``"1.2"`` or
                          ``"1.3"``. Known values are: "1.2" and "1.3".
                        "type": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "DEFAULT", "PRIMARY", and "ALIAS".
                        "wildcard": bool,  # Optional.
                          Indicates whether the domain includes all sub-domains, in
                          addition to the given domain.
                        "zone": "str"  # Optional. Optional.
                          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.  For example, If the
                          domain you are adding is ``app.domain.com``"" , the zone
                          could be ``domain.com``.
                    }
                ],
                "egress": {
                    "type": "AUTOASSIGN"  # Optional. Default
                      value is "AUTOASSIGN". The app egress type. Known values are:
                      "AUTOASSIGN" and "DEDICATED_IP".
                },
                "functions": [
                    {
                        "name": "str",  # The name. Must be
                          unique across all components within the same app. Required.
                        "alerts": [
                            {
                                "disabled": bool,  #
                                  Optional. Is the alert disabled?.
                                "operator":
                                  "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                                  "UNSPECIFIED_OPERATOR". Known values are:
                                  "UNSPECIFIED_OPERATOR", "GREATER_THAN", and
                                  "LESS_THAN".
                                "rule":
                                  "UNSPECIFIED_RULE",  # Optional. Default value is
                                  "UNSPECIFIED_RULE". Known values are:
                                  "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                                  "MEM_UTILIZATION", "RESTART_COUNT",
                                  "DEPLOYMENT_FAILED", "DEPLOYMENT_LIVE",
                                  "DOMAIN_FAILED", "DOMAIN_LIVE",
                                  "FUNCTIONS_ACTIVATION_COUNT",
                                  "FUNCTIONS_AVERAGE_DURATION_MS",
                                  "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                                  "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                                  "FUNCTIONS_ERROR_COUNT", and
                                  "FUNCTIONS_GB_RATE_PER_SECOND".
                                "value": 0.0,  #
                                  Optional. Threshold value for alert.
                                "window":
                                  "UNSPECIFIED_WINDOW"  # Optional. Default value is
                                  "UNSPECIFIED_WINDOW". Known values are:
                                  "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                                  "THIRTY_MINUTES", and "ONE_HOUR".
                            }
                        ],
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "ingress": {
                    "rules": [
                        {
                            "component": {
                                "name": "str",  # The
                                  name of the component to route to. Required.
"preserve_path_prefix": "str",  # Optional. An
                                  optional 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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``. Note: this is not
                                  applicable for Functions Components and is mutually
                                  exclusive with ``rewrite``.
                                "rewrite": "str"  #
                                  Optional. An optional field that will rewrite the
                                  path of the component to be what is specified here.
                                  By default, the HTTP request path will be trimmed
                                  from the left when forwarded to the component. For
                                  example, a component with ``path=/api`` will have
                                  requests to ``/api/list`` trimmed to ``/list``. If
                                  you specified the rewrite to be ``/v1/``"" , requests
                                  to ``/api/list`` would be rewritten to ``/v1/list``.
                                  Note: this is mutually exclusive with
                                  ``preserve_path_prefix``.
                            },
                            "cors": {
                                "allow_credentials":
                                  bool,  # Optional. Whether browsers should expose the
                                  response to the client-side JavaScript code when the
                                  request"u2019s credentials mode is include. This
                                  configures the ``Access-Control-Allow-Credentials``
                                  header.
                                "allow_headers": [
                                    "str"  #
                                      Optional. The set of allowed HTTP request
                                      headers. This configures the
                                      ``Access-Control-Allow-Headers`` header.
                                ],
                                "allow_methods": [
                                    "str"  #
                                      Optional. The set of allowed HTTP methods. This
                                      configures the ``Access-Control-Allow-Methods``
                                      header.
                                ],
                                "allow_origins": [
                                    {
"exact": "str",  # Optional. Exact string
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"prefix": "str",  # Optional. Prefix-based
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"regex": "str"  # Optional. RE2 style
                                          regex-based match. Only 1 of ``exact``"" ,
                                          ``prefix``"" , or ``regex`` must be set. For
                                          more information about RE2 syntax, see:
                                          https://github.com/google/re2/wiki/Syntax.
                                    }
                                ],
                                "expose_headers": [
                                    "str"  #
                                      Optional. The set of HTTP response headers that
                                      browsers are allowed to access. This configures
                                      the ``Access-Control-Expose-Headers`` header.
                                ],
                                "max_age": "str"  #
                                  Optional. An optional duration specifying how long
                                  browsers can cache the results of a preflight
                                  request. This configures the
                                  ``Access-Control-Max-Age`` header.
                            },
                            "match": {
                                "path": {
                                    "prefix":
                                      "str"  # Prefix-based match. For example,
                                      ``/api`` will match ``/api``"" , ``/api/``"" ,
                                      and any nested paths such as
                                      ``/api/v1/endpoint``. Required.
                                }
                            },
                            "redirect": {
                                "authority": "str",
                                  # Optional. The authority/host to redirect to. This
                                  can be a hostname or IP address. Note: use ``port``
                                  to set the port.
                                "port": 0,  #
                                  Optional. The port to redirect to.
                                "redirect_code": 0,
                                  # Optional. The redirect code to use. Defaults to
                                  ``302``. Supported values are 300, 301, 302, 303,
                                  304, 307, 308.
                                "scheme": "str",  #
                                  Optional. The scheme to redirect to. Supported values
                                  are ``http`` or ``https``. Default: ``https``.
                                "uri": "str"  #
                                  Optional. An optional URI path to redirect to. Note:
                                  if this is specified the whole URI of the original
                                  request will be overwritten to this value,
                                  irrespective of the original request URI being
                                  matched.
                            }
                        }
                    ]
                },
                "jobs": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "kind": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "PRE_DEPLOY", "POST_DEPLOY", and "FAILED_DEPLOY".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "region": "str",  # Optional. The slug form of the
                  geographical origin of the app. Default: ``nearest available``. Known
                  values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon",
                  and "syd".
                "services": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "health_check": {
                            "failure_threshold": 0,  #
                              Optional. The number of failed health checks before
                              considered unhealthy.
                            "http_path": "str",  #
                              Optional. The route path used for the HTTP health check
                              ping. If not set, the HTTP health check will be disabled
                              and a TCP health check used instead.
                            "initial_delay_seconds": 0,
                              # Optional. The number of seconds to wait before
                              beginning health checks.
                            "period_seconds": 0,  #
                              Optional. The number of seconds to wait between health
                              checks.
                            "port": 0,  # Optional. 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.
                            "success_threshold": 0,  #
                              Optional. The number of successful health checks before
                              considered healthy.
                            "timeout_seconds": 0  #
                              Optional. The number of seconds after which the check
                              times out.
                        },
                        "http_port": 0,  # Optional. The
                          internal port on which this service's run command will
                          listen. Default: 8080 If there is not an environment variable
                          with the name ``PORT``"" , one will be automatically added
                          with its value set to the value of this field.
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "internal_ports": [
                            0  # Optional. The ports on
                              which this service will listen for internal traffic.
                        ],
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "drain_seconds": 0,  #
                              Optional. 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).
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "static_sites": [
                    {
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "catchall_document": "str",  #
                          Optional. The name of the document to use as the fallback for
                          any requests to documents that are not found when serving
                          this static site. Only 1 of ``catchall_document`` or
                          ``error_document`` can be set.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "error_document": "404.html",  #
                          Optional. Default value is "404.html". The name of the error
                          document to use when serving this static site. Default:
                          404.html. If no such file exists within the built assets, App
                          Platform will supply one.
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "index_document": "index.html",  #
                          Optional. Default value is "index.html". The name of the
                          index document to use when serving this static site. Default:
                          index.html.
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "output_dir": "str",  # Optional. 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``"" , ``build``.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "workers": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ]
            },
            "static_sites": [
                {
                    "name": "str",  # Optional. The name of this
                      static site.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this static
                      site.
                }
            ],
            "tier_slug": "str",  # Optional. The current pricing tier
              slug of the deployment.
            "updated_at": "2020-02-20 00:00:00",  # Optional. When the
              deployment was last updated.
            "workers": [
                {
                    "name": "str",  # Optional. The name of this
                      worker.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this worker.
                }
            ]
        },
        "last_deployment_created_at": "2020-02-20 00:00:00",  # Optional. The
          creation time of the last deployment.
        "live_domain": "str",  # Optional. The live domain of the app.
        "live_url": "str",  # Optional. The live URL of the app.
        "live_url_base": "str",  # Optional. The live URL base of the app,
          the URL excluding the path.
        "owner_uuid": "str",  # Optional. The ID of the account to which the
          application belongs.
        "pending_deployment": {
            "cause": "str",  # Optional. What caused this deployment to
              be created.
            "cloned_from": "str",  # Optional. The ID of a previous
              deployment that this deployment was cloned from.
            "created_at": "2020-02-20 00:00:00",  # Optional. The
              creation time of the deployment.
            "functions": [
                {
                    "name": "str",  # Optional. The name of this
                      functions component.
                    "namespace": "str",  # Optional. The
                      namespace where the functions are deployed.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      functions component.
                }
            ],
            "id": "str",  # Optional. The ID of the deployment.
            "jobs": [
                {
                    "name": "str",  # Optional. The name of this
                      job.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this job.
                }
            ],
            "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN".
              Known values are: "UNKNOWN", "PENDING_BUILD", "BUILDING",
              "PENDING_DEPLOY", "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and
              "CANCELED".
            "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional.
              When the deployment phase was last updated.
            "progress": {
                "error_steps": 0,  # Optional. Number of unsuccessful
                  steps.
                "pending_steps": 0,  # Optional. Number of pending
                  steps.
                "running_steps": 0,  # Optional. Number of currently
                  running steps.
                "steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "success_steps": 0,  # Optional. Number of successful
                  steps.
                "summary_steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "total_steps": 0  # Optional. Total number of steps.
            },
            "services": [
                {
                    "name": "str",  # Optional. The name of this
                      service.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      service.
                }
            ],
            "spec": {
                "name": "str",  # The name of the app. Must be unique
                  across all apps in the same account. Required.
                "databases": [
                    {
                        "name": "str",  # The database's
                          name. The name must be unique across all components within
                          the same app and cannot use capital letters. Required.
                        "cluster_name": "str",  # Optional.
                          The name of the underlying DigitalOcean DBaaS cluster. This
                          is required for production databases. For dev databases, if
                          cluster_name is not set, a new cluster will be provisioned.
                        "db_name": "str",  # Optional. The
                          name of the MySQL or PostgreSQL database to configure.
                        "db_user": "str",  # Optional. The
                          name of the MySQL or PostgreSQL user to configure.
                        "engine": "UNSET",  # Optional.
                          Default value is "UNSET". * MYSQL: MySQL * PG: PostgreSQL *
                          REDIS: Redis * MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH:
                          OpenSearch. Known values are: "UNSET", "MYSQL", "PG",
                          "REDIS", "MONGODB", "KAFKA", and "OPENSEARCH".
                        "production": bool,  # Optional.
                          Whether this is a production or dev database.
                        "version": "str"  # Optional. The
                          version of the database engine.
                    }
                ],
                "domains": [
                    {
                        "domain": "str",  # The hostname for
                          the domain. Required.
                        "minimum_tls_version": "str",  #
                          Optional. The minimum version of TLS a client application can
                          use to access resources for the domain.  Must be one of the
                          following values wrapped within quotations: ``"1.2"`` or
                          ``"1.3"``. Known values are: "1.2" and "1.3".
                        "type": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "DEFAULT", "PRIMARY", and "ALIAS".
                        "wildcard": bool,  # Optional.
                          Indicates whether the domain includes all sub-domains, in
                          addition to the given domain.
                        "zone": "str"  # Optional. Optional.
                          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.  For example, If the
                          domain you are adding is ``app.domain.com``"" , the zone
                          could be ``domain.com``.
                    }
                ],
                "egress": {
                    "type": "AUTOASSIGN"  # Optional. Default
                      value is "AUTOASSIGN". The app egress type. Known values are:
                      "AUTOASSIGN" and "DEDICATED_IP".
                },
                "functions": [
                    {
                        "name": "str",  # The name. Must be
                          unique across all components within the same app. Required.
                        "alerts": [
                            {
                                "disabled": bool,  #
                                  Optional. Is the alert disabled?.
                                "operator":
                                  "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                                  "UNSPECIFIED_OPERATOR". Known values are:
                                  "UNSPECIFIED_OPERATOR", "GREATER_THAN", and
                                  "LESS_THAN".
                                "rule":
                                  "UNSPECIFIED_RULE",  # Optional. Default value is
                                  "UNSPECIFIED_RULE". Known values are:
                                  "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                                  "MEM_UTILIZATION", "RESTART_COUNT",
                                  "DEPLOYMENT_FAILED", "DEPLOYMENT_LIVE",
                                  "DOMAIN_FAILED", "DOMAIN_LIVE",
                                  "FUNCTIONS_ACTIVATION_COUNT",
                                  "FUNCTIONS_AVERAGE_DURATION_MS",
                                  "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                                  "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                                  "FUNCTIONS_ERROR_COUNT", and
                                  "FUNCTIONS_GB_RATE_PER_SECOND".
                                "value": 0.0,  #
                                  Optional. Threshold value for alert.
                                "window":
                                  "UNSPECIFIED_WINDOW"  # Optional. Default value is
                                  "UNSPECIFIED_WINDOW". Known values are:
                                  "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                                  "THIRTY_MINUTES", and "ONE_HOUR".
                            }
                        ],
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "ingress": {
                    "rules": [
                        {
                            "component": {
                                "name": "str",  # The
                                  name of the component to route to. Required.
"preserve_path_prefix": "str",  # Optional. An
                                  optional 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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``. Note: this is not
                                  applicable for Functions Components and is mutually
                                  exclusive with ``rewrite``.
                                "rewrite": "str"  #
                                  Optional. An optional field that will rewrite the
                                  path of the component to be what is specified here.
                                  By default, the HTTP request path will be trimmed
                                  from the left when forwarded to the component. For
                                  example, a component with ``path=/api`` will have
                                  requests to ``/api/list`` trimmed to ``/list``. If
                                  you specified the rewrite to be ``/v1/``"" , requests
                                  to ``/api/list`` would be rewritten to ``/v1/list``.
                                  Note: this is mutually exclusive with
                                  ``preserve_path_prefix``.
                            },
                            "cors": {
                                "allow_credentials":
                                  bool,  # Optional. Whether browsers should expose the
                                  response to the client-side JavaScript code when the
                                  request"u2019s credentials mode is include. This
                                  configures the ``Access-Control-Allow-Credentials``
                                  header.
                                "allow_headers": [
                                    "str"  #
                                      Optional. The set of allowed HTTP request
                                      headers. This configures the
                                      ``Access-Control-Allow-Headers`` header.
                                ],
                                "allow_methods": [
                                    "str"  #
                                      Optional. The set of allowed HTTP methods. This
                                      configures the ``Access-Control-Allow-Methods``
                                      header.
                                ],
                                "allow_origins": [
                                    {
"exact": "str",  # Optional. Exact string
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"prefix": "str",  # Optional. Prefix-based
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"regex": "str"  # Optional. RE2 style
                                          regex-based match. Only 1 of ``exact``"" ,
                                          ``prefix``"" , or ``regex`` must be set. For
                                          more information about RE2 syntax, see:
                                          https://github.com/google/re2/wiki/Syntax.
                                    }
                                ],
                                "expose_headers": [
                                    "str"  #
                                      Optional. The set of HTTP response headers that
                                      browsers are allowed to access. This configures
                                      the ``Access-Control-Expose-Headers`` header.
                                ],
                                "max_age": "str"  #
                                  Optional. An optional duration specifying how long
                                  browsers can cache the results of a preflight
                                  request. This configures the
                                  ``Access-Control-Max-Age`` header.
                            },
                            "match": {
                                "path": {
                                    "prefix":
                                      "str"  # Prefix-based match. For example,
                                      ``/api`` will match ``/api``"" , ``/api/``"" ,
                                      and any nested paths such as
                                      ``/api/v1/endpoint``. Required.
                                }
                            },
                            "redirect": {
                                "authority": "str",
                                  # Optional. The authority/host to redirect to. This
                                  can be a hostname or IP address. Note: use ``port``
                                  to set the port.
                                "port": 0,  #
                                  Optional. The port to redirect to.
                                "redirect_code": 0,
                                  # Optional. The redirect code to use. Defaults to
                                  ``302``. Supported values are 300, 301, 302, 303,
                                  304, 307, 308.
                                "scheme": "str",  #
                                  Optional. The scheme to redirect to. Supported values
                                  are ``http`` or ``https``. Default: ``https``.
                                "uri": "str"  #
                                  Optional. An optional URI path to redirect to. Note:
                                  if this is specified the whole URI of the original
                                  request will be overwritten to this value,
                                  irrespective of the original request URI being
                                  matched.
                            }
                        }
                    ]
                },
                "jobs": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "kind": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "PRE_DEPLOY", "POST_DEPLOY", and "FAILED_DEPLOY".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "region": "str",  # Optional. The slug form of the
                  geographical origin of the app. Default: ``nearest available``. Known
                  values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon",
                  and "syd".
                "services": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "health_check": {
                            "failure_threshold": 0,  #
                              Optional. The number of failed health checks before
                              considered unhealthy.
                            "http_path": "str",  #
                              Optional. The route path used for the HTTP health check
                              ping. If not set, the HTTP health check will be disabled
                              and a TCP health check used instead.
                            "initial_delay_seconds": 0,
                              # Optional. The number of seconds to wait before
                              beginning health checks.
                            "period_seconds": 0,  #
                              Optional. The number of seconds to wait between health
                              checks.
                            "port": 0,  # Optional. 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.
                            "success_threshold": 0,  #
                              Optional. The number of successful health checks before
                              considered healthy.
                            "timeout_seconds": 0  #
                              Optional. The number of seconds after which the check
                              times out.
                        },
                        "http_port": 0,  # Optional. The
                          internal port on which this service's run command will
                          listen. Default: 8080 If there is not an environment variable
                          with the name ``PORT``"" , one will be automatically added
                          with its value set to the value of this field.
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "internal_ports": [
                            0  # Optional. The ports on
                              which this service will listen for internal traffic.
                        ],
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "drain_seconds": 0,  #
                              Optional. 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).
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "static_sites": [
                    {
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "catchall_document": "str",  #
                          Optional. The name of the document to use as the fallback for
                          any requests to documents that are not found when serving
                          this static site. Only 1 of ``catchall_document`` or
                          ``error_document`` can be set.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "error_document": "404.html",  #
                          Optional. Default value is "404.html". The name of the error
                          document to use when serving this static site. Default:
                          404.html. If no such file exists within the built assets, App
                          Platform will supply one.
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "index_document": "index.html",  #
                          Optional. Default value is "index.html". The name of the
                          index document to use when serving this static site. Default:
                          index.html.
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "output_dir": "str",  # Optional. 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``"" , ``build``.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "workers": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ]
            },
            "static_sites": [
                {
                    "name": "str",  # Optional. The name of this
                      static site.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this static
                      site.
                }
            ],
            "tier_slug": "str",  # Optional. The current pricing tier
              slug of the deployment.
            "updated_at": "2020-02-20 00:00:00",  # Optional. When the
              deployment was last updated.
            "workers": [
                {
                    "name": "str",  # Optional. The name of this
                      worker.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this worker.
                }
            ]
        },
        "pinned_deployment": {
            "cause": "str",  # Optional. What caused this deployment to
              be created.
            "cloned_from": "str",  # Optional. The ID of a previous
              deployment that this deployment was cloned from.
            "created_at": "2020-02-20 00:00:00",  # Optional. The
              creation time of the deployment.
            "functions": [
                {
                    "name": "str",  # Optional. The name of this
                      functions component.
                    "namespace": "str",  # Optional. The
                      namespace where the functions are deployed.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      functions component.
                }
            ],
            "id": "str",  # Optional. The ID of the deployment.
            "jobs": [
                {
                    "name": "str",  # Optional. The name of this
                      job.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this job.
                }
            ],
            "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN".
              Known values are: "UNKNOWN", "PENDING_BUILD", "BUILDING",
              "PENDING_DEPLOY", "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and
              "CANCELED".
            "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional.
              When the deployment phase was last updated.
            "progress": {
                "error_steps": 0,  # Optional. Number of unsuccessful
                  steps.
                "pending_steps": 0,  # Optional. Number of pending
                  steps.
                "running_steps": 0,  # Optional. Number of currently
                  running steps.
                "steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "success_steps": 0,  # Optional. Number of successful
                  steps.
                "summary_steps": [
                    {
                        "component_name": "str",  # Optional.
                          The component name that this step is associated with.
                        "ended_at": "2020-02-20 00:00:00",  #
                          Optional. The end time of this step.
                        "message_base": "str",  # Optional.
                          The base of a human-readable description of the step intended
                          to be combined with the component name for presentation. For
                          example:  ``message_base`` = "Building service"
                          ``component_name`` = "api".
                        "name": "str",  # Optional. The name
                          of this step.
                        "reason": {
                            "code": "str",  # Optional.
                              The error code.
                            "message": "str"  # Optional.
                              The error message.
                        },
                        "started_at": "2020-02-20 00:00:00",
                          # Optional. The start time of this step.
                        "status": "UNKNOWN",  # Optional.
                          Default value is "UNKNOWN". Known values are: "UNKNOWN",
                          "PENDING", "RUNNING", "ERROR", and "SUCCESS".
                        "steps": [
                            {}  # Optional. Child steps
                              of this step.
                        ]
                    }
                ],
                "total_steps": 0  # Optional. Total number of steps.
            },
            "services": [
                {
                    "name": "str",  # Optional. The name of this
                      service.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this
                      service.
                }
            ],
            "spec": {
                "name": "str",  # The name of the app. Must be unique
                  across all apps in the same account. Required.
                "databases": [
                    {
                        "name": "str",  # The database's
                          name. The name must be unique across all components within
                          the same app and cannot use capital letters. Required.
                        "cluster_name": "str",  # Optional.
                          The name of the underlying DigitalOcean DBaaS cluster. This
                          is required for production databases. For dev databases, if
                          cluster_name is not set, a new cluster will be provisioned.
                        "db_name": "str",  # Optional. The
                          name of the MySQL or PostgreSQL database to configure.
                        "db_user": "str",  # Optional. The
                          name of the MySQL or PostgreSQL user to configure.
                        "engine": "UNSET",  # Optional.
                          Default value is "UNSET". * MYSQL: MySQL * PG: PostgreSQL *
                          REDIS: Redis * MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH:
                          OpenSearch. Known values are: "UNSET", "MYSQL", "PG",
                          "REDIS", "MONGODB", "KAFKA", and "OPENSEARCH".
                        "production": bool,  # Optional.
                          Whether this is a production or dev database.
                        "version": "str"  # Optional. The
                          version of the database engine.
                    }
                ],
                "domains": [
                    {
                        "domain": "str",  # The hostname for
                          the domain. Required.
                        "minimum_tls_version": "str",  #
                          Optional. The minimum version of TLS a client application can
                          use to access resources for the domain.  Must be one of the
                          following values wrapped within quotations: ``"1.2"`` or
                          ``"1.3"``. Known values are: "1.2" and "1.3".
                        "type": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "DEFAULT", "PRIMARY", and "ALIAS".
                        "wildcard": bool,  # Optional.
                          Indicates whether the domain includes all sub-domains, in
                          addition to the given domain.
                        "zone": "str"  # Optional. Optional.
                          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.  For example, If the
                          domain you are adding is ``app.domain.com``"" , the zone
                          could be ``domain.com``.
                    }
                ],
                "egress": {
                    "type": "AUTOASSIGN"  # Optional. Default
                      value is "AUTOASSIGN". The app egress type. Known values are:
                      "AUTOASSIGN" and "DEDICATED_IP".
                },
                "functions": [
                    {
                        "name": "str",  # The name. Must be
                          unique across all components within the same app. Required.
                        "alerts": [
                            {
                                "disabled": bool,  #
                                  Optional. Is the alert disabled?.
                                "operator":
                                  "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                                  "UNSPECIFIED_OPERATOR". Known values are:
                                  "UNSPECIFIED_OPERATOR", "GREATER_THAN", and
                                  "LESS_THAN".
                                "rule":
                                  "UNSPECIFIED_RULE",  # Optional. Default value is
                                  "UNSPECIFIED_RULE". Known values are:
                                  "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                                  "MEM_UTILIZATION", "RESTART_COUNT",
                                  "DEPLOYMENT_FAILED", "DEPLOYMENT_LIVE",
                                  "DOMAIN_FAILED", "DOMAIN_LIVE",
                                  "FUNCTIONS_ACTIVATION_COUNT",
                                  "FUNCTIONS_AVERAGE_DURATION_MS",
                                  "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                                  "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                                  "FUNCTIONS_ERROR_COUNT", and
                                  "FUNCTIONS_GB_RATE_PER_SECOND".
                                "value": 0.0,  #
                                  Optional. Threshold value for alert.
                                "window":
                                  "UNSPECIFIED_WINDOW"  # Optional. Default value is
                                  "UNSPECIFIED_WINDOW". Known values are:
                                  "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                                  "THIRTY_MINUTES", and "ONE_HOUR".
                            }
                        ],
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "ingress": {
                    "rules": [
                        {
                            "component": {
                                "name": "str",  # The
                                  name of the component to route to. Required.
"preserve_path_prefix": "str",  # Optional. An
                                  optional 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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``. Note: this is not
                                  applicable for Functions Components and is mutually
                                  exclusive with ``rewrite``.
                                "rewrite": "str"  #
                                  Optional. An optional field that will rewrite the
                                  path of the component to be what is specified here.
                                  By default, the HTTP request path will be trimmed
                                  from the left when forwarded to the component. For
                                  example, a component with ``path=/api`` will have
                                  requests to ``/api/list`` trimmed to ``/list``. If
                                  you specified the rewrite to be ``/v1/``"" , requests
                                  to ``/api/list`` would be rewritten to ``/v1/list``.
                                  Note: this is mutually exclusive with
                                  ``preserve_path_prefix``.
                            },
                            "cors": {
                                "allow_credentials":
                                  bool,  # Optional. Whether browsers should expose the
                                  response to the client-side JavaScript code when the
                                  request"u2019s credentials mode is include. This
                                  configures the ``Access-Control-Allow-Credentials``
                                  header.
                                "allow_headers": [
                                    "str"  #
                                      Optional. The set of allowed HTTP request
                                      headers. This configures the
                                      ``Access-Control-Allow-Headers`` header.
                                ],
                                "allow_methods": [
                                    "str"  #
                                      Optional. The set of allowed HTTP methods. This
                                      configures the ``Access-Control-Allow-Methods``
                                      header.
                                ],
                                "allow_origins": [
                                    {
"exact": "str",  # Optional. Exact string
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"prefix": "str",  # Optional. Prefix-based
                                          match. Only 1 of ``exact``"" , ``prefix``"" ,
                                          or ``regex`` must be set.
"regex": "str"  # Optional. RE2 style
                                          regex-based match. Only 1 of ``exact``"" ,
                                          ``prefix``"" , or ``regex`` must be set. For
                                          more information about RE2 syntax, see:
                                          https://github.com/google/re2/wiki/Syntax.
                                    }
                                ],
                                "expose_headers": [
                                    "str"  #
                                      Optional. The set of HTTP response headers that
                                      browsers are allowed to access. This configures
                                      the ``Access-Control-Expose-Headers`` header.
                                ],
                                "max_age": "str"  #
                                  Optional. An optional duration specifying how long
                                  browsers can cache the results of a preflight
                                  request. This configures the
                                  ``Access-Control-Max-Age`` header.
                            },
                            "match": {
                                "path": {
                                    "prefix":
                                      "str"  # Prefix-based match. For example,
                                      ``/api`` will match ``/api``"" , ``/api/``"" ,
                                      and any nested paths such as
                                      ``/api/v1/endpoint``. Required.
                                }
                            },
                            "redirect": {
                                "authority": "str",
                                  # Optional. The authority/host to redirect to. This
                                  can be a hostname or IP address. Note: use ``port``
                                  to set the port.
                                "port": 0,  #
                                  Optional. The port to redirect to.
                                "redirect_code": 0,
                                  # Optional. The redirect code to use. Defaults to
                                  ``302``. Supported values are 300, 301, 302, 303,
                                  304, 307, 308.
                                "scheme": "str",  #
                                  Optional. The scheme to redirect to. Supported values
                                  are ``http`` or ``https``. Default: ``https``.
                                "uri": "str"  #
                                  Optional. An optional URI path to redirect to. Note:
                                  if this is specified the whole URI of the original
                                  request will be overwritten to this value,
                                  irrespective of the original request URI being
                                  matched.
                            }
                        }
                    ]
                },
                "jobs": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "kind": "UNSPECIFIED",  # Optional.
                          Default value is "UNSPECIFIED". * 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. Known values are: "UNSPECIFIED",
                          "PRE_DEPLOY", "POST_DEPLOY", and "FAILED_DEPLOY".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "region": "str",  # Optional. The slug form of the
                  geographical origin of the app. Default: ``nearest available``. Known
                  values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon",
                  and "syd".
                "services": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "health_check": {
                            "failure_threshold": 0,  #
                              Optional. The number of failed health checks before
                              considered unhealthy.
                            "http_path": "str",  #
                              Optional. The route path used for the HTTP health check
                              ping. If not set, the HTTP health check will be disabled
                              and a TCP health check used instead.
                            "initial_delay_seconds": 0,
                              # Optional. The number of seconds to wait before
                              beginning health checks.
                            "period_seconds": 0,  #
                              Optional. The number of seconds to wait between health
                              checks.
                            "port": 0,  # Optional. 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.
                            "success_threshold": 0,  #
                              Optional. The number of successful health checks before
                              considered healthy.
                            "timeout_seconds": 0  #
                              Optional. The number of seconds after which the check
                              times out.
                        },
                        "http_port": 0,  # Optional. The
                          internal port on which this service's run command will
                          listen. Default: 8080 If there is not an environment variable
                          with the name ``PORT``"" , one will be automatically added
                          with its value set to the value of this field.
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "internal_ports": [
                            0  # Optional. The ports on
                              which this service will listen for internal traffic.
                        ],
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "drain_seconds": 0,  #
                              Optional. 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).
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ],
                "static_sites": [
                    {
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "catchall_document": "str",  #
                          Optional. The name of the document to use as the fallback for
                          any requests to documents that are not found when serving
                          this static site. Only 1 of ``catchall_document`` or
                          ``error_document`` can be set.
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "error_document": "404.html",  #
                          Optional. Default value is "404.html". The name of the error
                          document to use when serving this static site. Default:
                          404.html. If no such file exists within the built assets, App
                          Platform will supply one.
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "index_document": "index.html",  #
                          Optional. Default value is "index.html". The name of the
                          index document to use when serving this static site. Default:
                          index.html.
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "output_dir": "str",  # Optional. 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``"" , ``build``.
                        "routes": [
                            {
                                "path": "str",  #
                                  Optional. (Deprecated - Use Ingress Rules instead).
                                  An HTTP path prefix. Paths must start with / and must
                                  be unique across all components within an app.
"preserve_path_prefix": bool  # Optional. An optional
                                  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. For example, a component with
                                  ``path=/api`` will have requests to ``/api/list``
                                  trimmed to ``/list``. If this value is ``true``"" ,
                                  the path will remain ``/api/list``.
                            }
                        ],
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str"  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                    }
                ],
                "workers": [
                    {
                        "autoscaling": {
                            "max_instance_count": 0,  #
                              Optional. The maximum amount of instances for this
                              component. Must be more than min_instance_count.
                            "metrics": {
                                "cpu": {
                                    "percent": 80
                                      # Optional. Default value is 80. The average
                                      target CPU utilization for the component.
                                }
                            },
                            "min_instance_count": 0  #
                              Optional. The minimum amount of instances for this
                              component. Must be less than max_instance_count.
                        },
                        "build_command": "str",  # Optional.
                          An optional build command to run while building this
                          component from source.
                        "dockerfile_path": "str",  #
                          Optional. The path to the Dockerfile relative to the root of
                          the repo. If set, it will be used to build this component.
                          Otherwise, App Platform will attempt to build it using
                          buildpacks.
                        "environment_slug": "str",  #
                          Optional. An environment slug describing the type of this
                          app. For a full list, please refer to `the product
                          documentation
                          <https://docs.digitalocean.com/products/app-platform/>`_.
                        "envs": [
                            {
                                "key": "str",  # The
                                  variable name. Required.
                                "scope":
                                  "RUN_AND_BUILD_TIME",  # Optional. Default value is
                                  "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only
                                  at run-time * BUILD_TIME: Made available only at
                                  build-time * RUN_AND_BUILD_TIME: Made available at
                                  both build and run-time. Known values are: "UNSET",
                                  "RUN_TIME", "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                                "type": "GENERAL",  #
                                  Optional. Default value is "GENERAL". * GENERAL: A
                                  plain-text environment variable * SECRET: A secret
                                  encrypted environment variable. Known values are:
                                  "GENERAL" and "SECRET".
                                "value": "str"  #
                                  Optional. The value. If the type is ``SECRET``"" ,
                                  the value will be encrypted on first submission. On
                                  following submissions, the encrypted value should be
                                  used.
                            }
                        ],
                        "git": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "repo_clone_url": "str"  #
                              Optional. The clone URL of the repo. Example:
                              ``https://github.com/digitalocean/sample-golang.git``.
                        },
                        "github": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "gitlab": {
                            "branch": "str",  # Optional.
                              The name of the branch to use.
                            "deploy_on_push": bool,  #
                              Optional. Whether to automatically deploy new commits
                              made to the repo.
                            "repo": "str"  # Optional.
                              The name of the repo in the format owner/repo. Example:
                              ``digitalocean/sample-golang``.
                        },
                        "image": {
                            "deploy_on_push": {
                                "enabled": bool  #
                                  Optional. Whether to automatically deploy new images.
                                  Can only be used for images hosted in DOCR and can
                                  only be used with an image tag, not a specific
                                  digest.
                            },
                            "digest": "str",  # Optional.
                              The image digest. Cannot be specified if tag is provided.
                            "registry": "str",  #
                              Optional. The registry name. Must be left empty for the
                              ``DOCR`` registry type.
                            "registry_credentials":
                              "str",  # Optional. The credentials to be able to pull
                              the image. The value will be encrypted on first
                              submission. On following submissions, the encrypted value
                              should be used.   * "$username:$access_token" for
                              registries of type ``DOCKER_HUB``. *
                              "$username:$access_token" for registries of type
                              ``GHCR``.
                            "registry_type": "str",  #
                              Optional. * DOCKER_HUB: The DockerHub container registry
                              type. * DOCR: The DigitalOcean container registry type. *
                              GHCR: The Github container registry type. Known values
                              are: "DOCKER_HUB", "DOCR", and "GHCR".
                            "repository": "str",  #
                              Optional. The repository name.
                            "tag": "latest"  # Optional.
                              Default value is "latest". The repository tag. Defaults
                              to ``latest`` if not provided and no digest is provided.
                              Cannot be specified if digest is provided.
                        },
                        "instance_count": 1,  # Optional.
                          Default value is 1. The amount of instances that this
                          component should be scaled to. Default: 1. Must not be set if
                          autoscaling is used.
                        "instance_size_slug":
                          "apps-s-1vcpu-0.5gb",  # Optional. Default value is
                          "apps-s-1vcpu-0.5gb". The instance size to use for this
                          component. Default: ``apps-s-1vcpu-0.5gb``. Known values are:
                          "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                          "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                          "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                          "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                          "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and
                          "apps-d-8vcpu-32gb".
                        "log_destinations": [
                            {
                                "name": "str",  #
                                  Required.
                                "datadog": {
                                    "api_key":
                                      "str",  # Datadog API key. Required.
                                    "endpoint":
                                      "str"  # Optional. Datadog HTTP log intake
                                      endpoint.
                                },
                                "logtail": {
                                    "token":
                                      "str"  # Optional. Logtail token.
                                },
                                "open_search": {
                                    "basic_auth":
                                      {
"password": {},  # Optional. Password for
                                          user defined in User. Is required when
                                          ``endpoint`` is set. Cannot be set if using a
                                          DigitalOcean DBaaS OpenSearch cluster.
"user": "str"  # Optional. Username to
                                          authenticate with. Only required when
                                          ``endpoint`` is set. Defaults to ``doadmin``
                                          when ``cluster_name`` is set.
                                    },
"cluster_name": "str",  # Optional. The name of a
                                      DigitalOcean DBaaS OpenSearch cluster to use as a
                                      log forwarding destination. Cannot be specified
                                      if ``endpoint`` is also specified.
                                    "endpoint":
                                      "str",  # Optional. OpenSearch API Endpoint. Only
                                      HTTPS is supported. Format:
                                      https://:code:`<host>`::code:`<port>`. Cannot be
                                      specified if ``cluster_name`` is also specified.
                                    "index_name":
                                      "logs"  # Optional. Default value is "logs". The
                                      index name to use for the logs. If not set, the
                                      default index name is "logs".
                                },
                                "papertrail": {
                                    "endpoint":
                                      "str"  # Papertrail syslog endpoint. Required.
                                }
                            }
                        ],
                        "name": "str",  # Optional. The name.
                          Must be unique across all components within the same app.
                        "run_command": "str",  # Optional. An
                          optional run command to override the component's default.
                        "source_dir": "str",  # Optional. An
                          optional path to the working directory to use for the build.
                          For Dockerfile builds, this will be used as the build
                          context. Must be relative to the root of the repo.
                        "termination": {
                            "grace_period_seconds": 0  #
                              Optional. The number of seconds to wait between sending a
                              TERM signal to a container and issuing a KILL which
                              causes immediate shutdown. (Default 120).
                        }
                    }
                ]
            },
            "static_sites": [
                {
                    "name": "str",  # Optional. The name of this
                      static site.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this static
                      site.
                }
            ],
            "tier_slug": "str",  # Optional. The current pricing tier
              slug of the deployment.
            "updated_at": "2020-02-20 00:00:00",  # Optional. When the
              deployment was last updated.
            "workers": [
                {
                    "name": "str",  # Optional. The name of this
                      worker.
                    "source_commit_hash": "str"  # Optional. The
                      commit hash of the repository that was used to build this worker.
                }
            ]
        },
        "project_id": "str",  # Optional. The ID of the project the app is
          assigned to. This will be empty if there is a lookup failure.
        "region": {
            "continent": "str",  # Optional. The continent that this
              region is in.
            "data_centers": [
                "str"  # Optional. Data centers that are in this
                  region.
            ],
            "default": bool,  # Optional. Whether or not the region is
              presented as the default.
            "disabled": bool,  # Optional. Whether or not the region is
              open for new apps.
            "flag": "str",  # Optional. The flag of this region.
            "label": "str",  # Optional. A human-readable name of the
              region.
            "reason": "str",  # Optional. Reason that this region is not
              available.
            "slug": "str"  # Optional. The slug form of the region name.
        },
        "tier_slug": "str",  # Optional. The current pricing tier slug of the
          app.
        "updated_at": "2020-02-20 00:00:00"  # Optional. Time of the app's
          last configuration update.
    }
}
create_deployment(app_id: str, body: JSON, *, content_type: str = 'application/json', **kwargs: Any) JSON
create_deployment(app_id: str, body: IO[bytes], *, content_type: str = 'application/json', **kwargs: Any) JSON

Create an App Deployment.

Creating an app deployment will pull the latest changes from your repository and schedule a new deployment for your app.

Parameters:
  • app_id (str) – The app ID. Required.

  • body (JSON or IO[bytes]) – Is either a JSON type or a IO[bytes] type. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# JSON input template you can fill out and use as your body input.
body = {
    "force_build": bool  # Optional. Indicates whether to force a build of app
      from source even if an existing cached build is suitable for re-use.
}

# response body for status code(s): 200
response == {
    "deployment": {
        "cause": "str",  # Optional. What caused this deployment to be
          created.
        "cloned_from": "str",  # Optional. The ID of a previous deployment
          that this deployment was cloned from.
        "created_at": "2020-02-20 00:00:00",  # Optional. The creation time
          of the deployment.
        "functions": [
            {
                "name": "str",  # Optional. The name of this
                  functions component.
                "namespace": "str",  # Optional. The namespace where
                  the functions are deployed.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this functions
                  component.
            }
        ],
        "id": "str",  # Optional. The ID of the deployment.
        "jobs": [
            {
                "name": "str",  # Optional. The name of this job.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this job.
            }
        ],
        "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN". Known
          values are: "UNKNOWN", "PENDING_BUILD", "BUILDING", "PENDING_DEPLOY",
          "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and "CANCELED".
        "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional. When the
          deployment phase was last updated.
        "progress": {
            "error_steps": 0,  # Optional. Number of unsuccessful steps.
            "pending_steps": 0,  # Optional. Number of pending steps.
            "running_steps": 0,  # Optional. Number of currently running
              steps.
            "steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "success_steps": 0,  # Optional. Number of successful steps.
            "summary_steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "total_steps": 0  # Optional. Total number of steps.
        },
        "services": [
            {
                "name": "str",  # Optional. The name of this service.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this service.
            }
        ],
        "spec": {
            "name": "str",  # The name of the app. Must be unique across
              all apps in the same account. Required.
            "databases": [
                {
                    "name": "str",  # The database's name. The
                      name must be unique across all components within the same app and
                      cannot use capital letters. Required.
                    "cluster_name": "str",  # Optional. The name
                      of the underlying DigitalOcean DBaaS cluster. This is required
                      for production databases. For dev databases, if cluster_name is
                      not set, a new cluster will be provisioned.
                    "db_name": "str",  # Optional. The name of
                      the MySQL or PostgreSQL database to configure.
                    "db_user": "str",  # Optional. The name of
                      the MySQL or PostgreSQL user to configure.
                    "engine": "UNSET",  # Optional. Default value
                      is "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis *
                      MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known
                      values are: "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA",
                      and "OPENSEARCH".
                    "production": bool,  # Optional. Whether this
                      is a production or dev database.
                    "version": "str"  # Optional. The version of
                      the database engine.
                }
            ],
            "domains": [
                {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                }
            ],
            "egress": {
                "type": "AUTOASSIGN"  # Optional. Default value is
                  "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
                  "DEDICATED_IP".
            },
            "functions": [
                {
                    "name": "str",  # The name. Must be unique
                      across all components within the same app. Required.
                    "alerts": [
                        {
                            "disabled": bool,  #
                              Optional. Is the alert disabled?.
                            "operator":
                              "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                              "UNSPECIFIED_OPERATOR". Known values are:
                              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
                            "rule": "UNSPECIFIED_RULE",
                              # Optional. Default value is "UNSPECIFIED_RULE". Known
                              values are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                              "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                              "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                              "FUNCTIONS_ACTIVATION_COUNT",
                              "FUNCTIONS_AVERAGE_DURATION_MS",
                              "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                              "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                              "FUNCTIONS_ERROR_COUNT", and
                              "FUNCTIONS_GB_RATE_PER_SECOND".
                            "value": 0.0,  # Optional.
                              Threshold value for alert.
                            "window":
                              "UNSPECIFIED_WINDOW"  # Optional. Default value is
                              "UNSPECIFIED_WINDOW". Known values are:
                              "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                              "THIRTY_MINUTES", and "ONE_HOUR".
                        }
                    ],
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "ingress": {
                "rules": [
                    {
                        "component": {
                            "name": "str",  # The name of
                              the component to route to. Required.
                            "preserve_path_prefix":
                              "str",  # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``. Note: this is not applicable for
                              Functions Components and is mutually exclusive with
                              ``rewrite``.
                            "rewrite": "str"  # Optional.
                              An optional field that will rewrite the path of the
                              component to be what is specified here. By default, the
                              HTTP request path will be trimmed from the left when
                              forwarded to the component. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If you specified the rewrite to be
                              ``/v1/``"" , requests to ``/api/list`` would be rewritten
                              to ``/v1/list``. Note: this is mutually exclusive with
                              ``preserve_path_prefix``.
                        },
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "match": {
                            "path": {
                                "prefix": "str"  #
                                  Prefix-based match. For example, ``/api`` will match
                                  ``/api``"" , ``/api/``"" , and any nested paths such
                                  as ``/api/v1/endpoint``. Required.
                            }
                        },
                        "redirect": {
                            "authority": "str",  #
                              Optional. The authority/host to redirect to. This can be
                              a hostname or IP address. Note: use ``port`` to set the
                              port.
                            "port": 0,  # Optional. The
                              port to redirect to.
                            "redirect_code": 0,  #
                              Optional. The redirect code to use. Defaults to ``302``.
                              Supported values are 300, 301, 302, 303, 304, 307, 308.
                            "scheme": "str",  # Optional.
                              The scheme to redirect to. Supported values are ``http``
                              or ``https``. Default: ``https``.
                            "uri": "str"  # Optional. An
                              optional URI path to redirect to. Note: if this is
                              specified the whole URI of the original request will be
                              overwritten to this value, irrespective of the original
                              request URI being matched.
                        }
                    }
                ]
            },
            "jobs": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "kind": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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. Known values
                      are: "UNSPECIFIED", "PRE_DEPLOY", "POST_DEPLOY", and
                      "FAILED_DEPLOY".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "region": "str",  # Optional. The slug form of the
              geographical origin of the app. Default: ``nearest available``. Known
              values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and
              "syd".
            "services": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "health_check": {
                        "failure_threshold": 0,  # Optional.
                          The number of failed health checks before considered
                          unhealthy.
                        "http_path": "str",  # Optional. The
                          route path used for the HTTP health check ping. If not set,
                          the HTTP health check will be disabled and a TCP health check
                          used instead.
                        "initial_delay_seconds": 0,  #
                          Optional. The number of seconds to wait before beginning
                          health checks.
                        "period_seconds": 0,  # Optional. The
                          number of seconds to wait between health checks.
                        "port": 0,  # Optional. 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.
                        "success_threshold": 0,  # Optional.
                          The number of successful health checks before considered
                          healthy.
                        "timeout_seconds": 0  # Optional. The
                          number of seconds after which the check times out.
                    },
                    "http_port": 0,  # Optional. The internal
                      port on which this service's run command will listen. Default:
                      8080 If there is not an environment variable with the name
                      ``PORT``"" , one will be automatically added with its value set
                      to the value of this field.
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "internal_ports": [
                        0  # Optional. The ports on which
                          this service will listen for internal traffic.
                    ],
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "drain_seconds": 0,  # Optional. 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).
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "static_sites": [
                {
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "catchall_document": "str",  # Optional. The
                      name of the document to use as the fallback for any requests to
                      documents that are not found when serving this static site. Only
                      1 of ``catchall_document`` or ``error_document`` can be set.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "error_document": "404.html",  # Optional.
                      Default value is "404.html". The name of the error document to
                      use when serving this static site. Default: 404.html. If no such
                      file exists within the built assets, App Platform will supply
                      one.
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "index_document": "index.html",  # Optional.
                      Default value is "index.html". The name of the index document to
                      use when serving this static site. Default: index.html.
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "output_dir": "str",  # Optional. 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``"" , ``build``.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "workers": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ]
        },
        "static_sites": [
            {
                "name": "str",  # Optional. The name of this static
                  site.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this static site.
            }
        ],
        "tier_slug": "str",  # Optional. The current pricing tier slug of the
          deployment.
        "updated_at": "2020-02-20 00:00:00",  # Optional. When the deployment
          was last updated.
        "workers": [
            {
                "name": "str",  # Optional. The name of this worker.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this worker.
            }
        ]
    }
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
create_rollback(app_id: str, body: JSON, *, content_type: str = 'application/json', **kwargs: Any) JSON
create_rollback(app_id: str, body: IO[bytes], *, content_type: str = 'application/json', **kwargs: Any) JSON

Rollback App.

Rollback an app to a previous deployment. A new deployment will be created to perform the rollback. The app will be pinned to the rollback deployment preventing any new deployments from being created, either manually or through Auto Deploy on Push webhooks. To resume deployments, the rollback must be either committed or reverted.

It is recommended to use the Validate App Rollback endpoint to double check if the rollback is valid and if there are any warnings.

Parameters:
  • app_id (str) – The app ID. Required.

  • body (JSON or IO[bytes]) – Is either a JSON type or a IO[bytes] type. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# JSON input template you can fill out and use as your body input.
body = {
    "deployment_id": "str",  # Optional. The ID of the deployment to rollback to.
    "skip_pin": bool  # Optional. Whether to skip pinning the rollback
      deployment. If false, the rollback deployment will be pinned and any new
      deployments including Auto Deploy on Push hooks will be disabled until the
      rollback is either manually committed or reverted via the CommitAppRollback or
      RevertAppRollback endpoints respectively. If true, the rollback will be
      immediately committed and the app will remain unpinned.
}

# response body for status code(s): 200
response == {
    "deployment": {
        "cause": "str",  # Optional. What caused this deployment to be
          created.
        "cloned_from": "str",  # Optional. The ID of a previous deployment
          that this deployment was cloned from.
        "created_at": "2020-02-20 00:00:00",  # Optional. The creation time
          of the deployment.
        "functions": [
            {
                "name": "str",  # Optional. The name of this
                  functions component.
                "namespace": "str",  # Optional. The namespace where
                  the functions are deployed.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this functions
                  component.
            }
        ],
        "id": "str",  # Optional. The ID of the deployment.
        "jobs": [
            {
                "name": "str",  # Optional. The name of this job.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this job.
            }
        ],
        "phase": "UNKNOWN",  # Optional. Default value is "UNKNOWN". Known
          values are: "UNKNOWN", "PENDING_BUILD", "BUILDING", "PENDING_DEPLOY",
          "DEPLOYING", "ACTIVE", "SUPERSEDED", "ERROR", and "CANCELED".
        "phase_last_updated_at": "2020-02-20 00:00:00",  # Optional. When the
          deployment phase was last updated.
        "progress": {
            "error_steps": 0,  # Optional. Number of unsuccessful steps.
            "pending_steps": 0,  # Optional. Number of pending steps.
            "running_steps": 0,  # Optional. Number of currently running
              steps.
            "steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "success_steps": 0,  # Optional. Number of successful steps.
            "summary_steps": [
                {
                    "component_name": "str",  # Optional. The
                      component name that this step is associated with.
                    "ended_at": "2020-02-20 00:00:00",  #
                      Optional. The end time of this step.
                    "message_base": "str",  # Optional. The base
                      of a human-readable description of the step intended to be
                      combined with the component name for presentation. For example:
                      ``message_base`` = "Building service" ``component_name`` = "api".
                    "name": "str",  # Optional. The name of this
                      step.
                    "reason": {
                        "code": "str",  # Optional. The error
                          code.
                        "message": "str"  # Optional. The
                          error message.
                    },
                    "started_at": "2020-02-20 00:00:00",  #
                      Optional. The start time of this step.
                    "status": "UNKNOWN",  # Optional. Default
                      value is "UNKNOWN". Known values are: "UNKNOWN", "PENDING",
                      "RUNNING", "ERROR", and "SUCCESS".
                    "steps": [
                        {}  # Optional. Child steps of this
                          step.
                    ]
                }
            ],
            "total_steps": 0  # Optional. Total number of steps.
        },
        "services": [
            {
                "name": "str",  # Optional. The name of this service.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this service.
            }
        ],
        "spec": {
            "name": "str",  # The name of the app. Must be unique across
              all apps in the same account. Required.
            "databases": [
                {
                    "name": "str",  # The database's name. The
                      name must be unique across all components within the same app and
                      cannot use capital letters. Required.
                    "cluster_name": "str",  # Optional. The name
                      of the underlying DigitalOcean DBaaS cluster. This is required
                      for production databases. For dev databases, if cluster_name is
                      not set, a new cluster will be provisioned.
                    "db_name": "str",  # Optional. The name of
                      the MySQL or PostgreSQL database to configure.
                    "db_user": "str",  # Optional. The name of
                      the MySQL or PostgreSQL user to configure.
                    "engine": "UNSET",  # Optional. Default value
                      is "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis *
                      MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known
                      values are: "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA",
                      and "OPENSEARCH".
                    "production": bool,  # Optional. Whether this
                      is a production or dev database.
                    "version": "str"  # Optional. The version of
                      the database engine.
                }
            ],
            "domains": [
                {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                }
            ],
            "egress": {
                "type": "AUTOASSIGN"  # Optional. Default value is
                  "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
                  "DEDICATED_IP".
            },
            "functions": [
                {
                    "name": "str",  # The name. Must be unique
                      across all components within the same app. Required.
                    "alerts": [
                        {
                            "disabled": bool,  #
                              Optional. Is the alert disabled?.
                            "operator":
                              "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                              "UNSPECIFIED_OPERATOR". Known values are:
                              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
                            "rule": "UNSPECIFIED_RULE",
                              # Optional. Default value is "UNSPECIFIED_RULE". Known
                              values are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                              "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                              "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                              "FUNCTIONS_ACTIVATION_COUNT",
                              "FUNCTIONS_AVERAGE_DURATION_MS",
                              "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                              "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                              "FUNCTIONS_ERROR_COUNT", and
                              "FUNCTIONS_GB_RATE_PER_SECOND".
                            "value": 0.0,  # Optional.
                              Threshold value for alert.
                            "window":
                              "UNSPECIFIED_WINDOW"  # Optional. Default value is
                              "UNSPECIFIED_WINDOW". Known values are:
                              "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                              "THIRTY_MINUTES", and "ONE_HOUR".
                        }
                    ],
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "ingress": {
                "rules": [
                    {
                        "component": {
                            "name": "str",  # The name of
                              the component to route to. Required.
                            "preserve_path_prefix":
                              "str",  # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``. Note: this is not applicable for
                              Functions Components and is mutually exclusive with
                              ``rewrite``.
                            "rewrite": "str"  # Optional.
                              An optional field that will rewrite the path of the
                              component to be what is specified here. By default, the
                              HTTP request path will be trimmed from the left when
                              forwarded to the component. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If you specified the rewrite to be
                              ``/v1/``"" , requests to ``/api/list`` would be rewritten
                              to ``/v1/list``. Note: this is mutually exclusive with
                              ``preserve_path_prefix``.
                        },
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "match": {
                            "path": {
                                "prefix": "str"  #
                                  Prefix-based match. For example, ``/api`` will match
                                  ``/api``"" , ``/api/``"" , and any nested paths such
                                  as ``/api/v1/endpoint``. Required.
                            }
                        },
                        "redirect": {
                            "authority": "str",  #
                              Optional. The authority/host to redirect to. This can be
                              a hostname or IP address. Note: use ``port`` to set the
                              port.
                            "port": 0,  # Optional. The
                              port to redirect to.
                            "redirect_code": 0,  #
                              Optional. The redirect code to use. Defaults to ``302``.
                              Supported values are 300, 301, 302, 303, 304, 307, 308.
                            "scheme": "str",  # Optional.
                              The scheme to redirect to. Supported values are ``http``
                              or ``https``. Default: ``https``.
                            "uri": "str"  # Optional. An
                              optional URI path to redirect to. Note: if this is
                              specified the whole URI of the original request will be
                              overwritten to this value, irrespective of the original
                              request URI being matched.
                        }
                    }
                ]
            },
            "jobs": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "kind": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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. Known values
                      are: "UNSPECIFIED", "PRE_DEPLOY", "POST_DEPLOY", and
                      "FAILED_DEPLOY".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "region": "str",  # Optional. The slug form of the
              geographical origin of the app. Default: ``nearest available``. Known
              values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and
              "syd".
            "services": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "health_check": {
                        "failure_threshold": 0,  # Optional.
                          The number of failed health checks before considered
                          unhealthy.
                        "http_path": "str",  # Optional. The
                          route path used for the HTTP health check ping. If not set,
                          the HTTP health check will be disabled and a TCP health check
                          used instead.
                        "initial_delay_seconds": 0,  #
                          Optional. The number of seconds to wait before beginning
                          health checks.
                        "period_seconds": 0,  # Optional. The
                          number of seconds to wait between health checks.
                        "port": 0,  # Optional. 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.
                        "success_threshold": 0,  # Optional.
                          The number of successful health checks before considered
                          healthy.
                        "timeout_seconds": 0  # Optional. The
                          number of seconds after which the check times out.
                    },
                    "http_port": 0,  # Optional. The internal
                      port on which this service's run command will listen. Default:
                      8080 If there is not an environment variable with the name
                      ``PORT``"" , one will be automatically added with its value set
                      to the value of this field.
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "internal_ports": [
                        0  # Optional. The ports on which
                          this service will listen for internal traffic.
                    ],
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "drain_seconds": 0,  # Optional. 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).
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "static_sites": [
                {
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "catchall_document": "str",  # Optional. The
                      name of the document to use as the fallback for any requests to
                      documents that are not found when serving this static site. Only
                      1 of ``catchall_document`` or ``error_document`` can be set.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "error_document": "404.html",  # Optional.
                      Default value is "404.html". The name of the error document to
                      use when serving this static site. Default: 404.html. If no such
                      file exists within the built assets, App Platform will supply
                      one.
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "index_document": "index.html",  # Optional.
                      Default value is "index.html". The name of the index document to
                      use when serving this static site. Default: index.html.
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "output_dir": "str",  # Optional. 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``"" , ``build``.
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "workers": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ]
        },
        "static_sites": [
            {
                "name": "str",  # Optional. The name of this static
                  site.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this static site.
            }
        ],
        "tier_slug": "str",  # Optional. The current pricing tier slug of the
          deployment.
        "updated_at": "2020-02-20 00:00:00",  # Optional. When the deployment
          was last updated.
        "workers": [
            {
                "name": "str",  # Optional. The name of this worker.
                "source_commit_hash": "str"  # Optional. The commit
                  hash of the repository that was used to build this worker.
            }
        ]
    }
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
delete(id: str, **kwargs: Any) MutableMapping[str, Any]

Delete an App.

Delete an existing app. Once deleted, all active deployments will be permanently shut down and the app deleted. If needed, be sure to back up your app specification so that you may re-create it at a later time.

Parameters:

id (str) – The ID of the app. Required.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "id": "str"  # Optional. The ID of the app that was deleted.
}
# response body for status code(s): 404
response == {
    "id": "str",  # A short identifier corresponding to the HTTP status code
      returned. For  example, the ID for a response returning a 404 status code would
      be "not_found.". Required.
    "message": "str",  # A message providing additional information about the
      error, including  details to help resolve it when possible. Required.
    "request_id": "str"  # Optional. Optionally, some endpoints may include a
      request ID that should be  provided when reporting bugs or opening support
      tickets to help  identify the issue.
}
get(id: str, *, name: Optional[str] = None, **kwargs: Any) MutableMapping[str, Any]

Retrieve an Existing App.

Retrieve details about an existing app by either its ID or name. To retrieve an app by its name, do not include an ID in the request path. Information about the current active deployment as well as any in progress ones will also be included in the response.

Parameters:
  • id (str) – The ID of the app. Required.

  • name (str) – The name of the app to retrieve. Default value is None.

Returns:

JSON object

Return type:

JSON

Raises:

HttpResponseError

Example:
# response body for status code(s): 200
response == {
    "app": {
        "spec": {
            "name": "str",  # The name of the app. Must be unique across
              all apps in the same account. Required.
            "databases": [
                {
                    "name": "str",  # The database's name. The
                      name must be unique across all components within the same app and
                      cannot use capital letters. Required.
                    "cluster_name": "str",  # Optional. The name
                      of the underlying DigitalOcean DBaaS cluster. This is required
                      for production databases. For dev databases, if cluster_name is
                      not set, a new cluster will be provisioned.
                    "db_name": "str",  # Optional. The name of
                      the MySQL or PostgreSQL database to configure.
                    "db_user": "str",  # Optional. The name of
                      the MySQL or PostgreSQL user to configure.
                    "engine": "UNSET",  # Optional. Default value
                      is "UNSET". * MYSQL: MySQL * PG: PostgreSQL * REDIS: Redis *
                      MONGODB: MongoDB * KAFKA: Kafka * OPENSEARCH: OpenSearch. Known
                      values are: "UNSET", "MYSQL", "PG", "REDIS", "MONGODB", "KAFKA",
                      and "OPENSEARCH".
                    "production": bool,  # Optional. Whether this
                      is a production or dev database.
                    "version": "str"  # Optional. The version of
                      the database engine.
                }
            ],
            "domains": [
                {
                    "domain": "str",  # The hostname for the
                      domain. Required.
                    "minimum_tls_version": "str",  # Optional.
                      The minimum version of TLS a client application can use to access
                      resources for the domain.  Must be one of the following values
                      wrapped within quotations: ``"1.2"`` or ``"1.3"``. Known values
                      are: "1.2" and "1.3".
                    "type": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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.
                      Known values are: "UNSPECIFIED", "DEFAULT", "PRIMARY", and
                      "ALIAS".
                    "wildcard": bool,  # Optional. Indicates
                      whether the domain includes all sub-domains, in addition to the
                      given domain.
                    "zone": "str"  # Optional. Optional. 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.  For example, If the domain you are
                      adding is ``app.domain.com``"" , the zone could be
                      ``domain.com``.
                }
            ],
            "egress": {
                "type": "AUTOASSIGN"  # Optional. Default value is
                  "AUTOASSIGN". The app egress type. Known values are: "AUTOASSIGN" and
                  "DEDICATED_IP".
            },
            "functions": [
                {
                    "name": "str",  # The name. Must be unique
                      across all components within the same app. Required.
                    "alerts": [
                        {
                            "disabled": bool,  #
                              Optional. Is the alert disabled?.
                            "operator":
                              "UNSPECIFIED_OPERATOR",  # Optional. Default value is
                              "UNSPECIFIED_OPERATOR". Known values are:
                              "UNSPECIFIED_OPERATOR", "GREATER_THAN", and "LESS_THAN".
                            "rule": "UNSPECIFIED_RULE",
                              # Optional. Default value is "UNSPECIFIED_RULE". Known
                              values are: "UNSPECIFIED_RULE", "CPU_UTILIZATION",
                              "MEM_UTILIZATION", "RESTART_COUNT", "DEPLOYMENT_FAILED",
                              "DEPLOYMENT_LIVE", "DOMAIN_FAILED", "DOMAIN_LIVE",
                              "FUNCTIONS_ACTIVATION_COUNT",
                              "FUNCTIONS_AVERAGE_DURATION_MS",
                              "FUNCTIONS_ERROR_RATE_PER_MINUTE",
                              "FUNCTIONS_AVERAGE_WAIT_TIME_MS",
                              "FUNCTIONS_ERROR_COUNT", and
                              "FUNCTIONS_GB_RATE_PER_SECOND".
                            "value": 0.0,  # Optional.
                              Threshold value for alert.
                            "window":
                              "UNSPECIFIED_WINDOW"  # Optional. Default value is
                              "UNSPECIFIED_WINDOW". Known values are:
                              "UNSPECIFIED_WINDOW", "FIVE_MINUTES", "TEN_MINUTES",
                              "THIRTY_MINUTES", and "ONE_HOUR".
                        }
                    ],
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "routes": [
                        {
                            "path": "str",  # Optional.
                              (Deprecated - Use Ingress Rules instead). An HTTP path
                              prefix. Paths must start with / and must be unique across
                              all components within an app.
                            "preserve_path_prefix": bool
                              # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``.
                        }
                    ],
                    "source_dir": "str"  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                }
            ],
            "ingress": {
                "rules": [
                    {
                        "component": {
                            "name": "str",  # The name of
                              the component to route to. Required.
                            "preserve_path_prefix":
                              "str",  # Optional. An optional 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. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If this value is ``true``"" , the path will
                              remain ``/api/list``. Note: this is not applicable for
                              Functions Components and is mutually exclusive with
                              ``rewrite``.
                            "rewrite": "str"  # Optional.
                              An optional field that will rewrite the path of the
                              component to be what is specified here. By default, the
                              HTTP request path will be trimmed from the left when
                              forwarded to the component. For example, a component with
                              ``path=/api`` will have requests to ``/api/list`` trimmed
                              to ``/list``. If you specified the rewrite to be
                              ``/v1/``"" , requests to ``/api/list`` would be rewritten
                              to ``/v1/list``. Note: this is mutually exclusive with
                              ``preserve_path_prefix``.
                        },
                        "cors": {
                            "allow_credentials": bool,  #
                              Optional. Whether browsers should expose the response to
                              the client-side JavaScript code when the request"u2019s
                              credentials mode is include. This configures the
                              ``Access-Control-Allow-Credentials`` header.
                            "allow_headers": [
                                "str"  # Optional.
                                  The set of allowed HTTP request headers. This
                                  configures the ``Access-Control-Allow-Headers``
                                  header.
                            ],
                            "allow_methods": [
                                "str"  # Optional.
                                  The set of allowed HTTP methods. This configures the
                                  ``Access-Control-Allow-Methods`` header.
                            ],
                            "allow_origins": [
                                {
                                    "exact":
                                      "str",  # Optional. Exact string match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "prefix":
                                      "str",  # Optional. Prefix-based match. Only 1 of
                                      ``exact``"" , ``prefix``"" , or ``regex`` must be
                                      set.
                                    "regex":
                                      "str"  # Optional. RE2 style regex-based match.
                                      Only 1 of ``exact``"" , ``prefix``"" , or
                                      ``regex`` must be set. For more information about
                                      RE2 syntax, see:
                                      https://github.com/google/re2/wiki/Syntax.
                                }
                            ],
                            "expose_headers": [
                                "str"  # Optional.
                                  The set of HTTP response headers that browsers are
                                  allowed to access. This configures the
                                  ``Access-Control-Expose-Headers`` header.
                            ],
                            "max_age": "str"  # Optional.
                              An optional duration specifying how long browsers can
                              cache the results of a preflight request. This configures
                              the ``Access-Control-Max-Age`` header.
                        },
                        "match": {
                            "path": {
                                "prefix": "str"  #
                                  Prefix-based match. For example, ``/api`` will match
                                  ``/api``"" , ``/api/``"" , and any nested paths such
                                  as ``/api/v1/endpoint``. Required.
                            }
                        },
                        "redirect": {
                            "authority": "str",  #
                              Optional. The authority/host to redirect to. This can be
                              a hostname or IP address. Note: use ``port`` to set the
                              port.
                            "port": 0,  # Optional. The
                              port to redirect to.
                            "redirect_code": 0,  #
                              Optional. The redirect code to use. Defaults to ``302``.
                              Supported values are 300, 301, 302, 303, 304, 307, 308.
                            "scheme": "str",  # Optional.
                              The scheme to redirect to. Supported values are ``http``
                              or ``https``. Default: ``https``.
                            "uri": "str"  # Optional. An
                              optional URI path to redirect to. Note: if this is
                              specified the whole URI of the original request will be
                              overwritten to this value, irrespective of the original
                              request URI being matched.
                        }
                    }
                ]
            },
            "jobs": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "kind": "UNSPECIFIED",  # Optional. Default
                      value is "UNSPECIFIED". * 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. Known values
                      are: "UNSPECIFIED", "PRE_DEPLOY", "POST_DEPLOY", and
                      "FAILED_DEPLOY".
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components within the same app.
                    "run_command": "str",  # Optional. An
                      optional run command to override the component's default.
                    "source_dir": "str",  # Optional. An optional
                      path to the working directory to use for the build. For
                      Dockerfile builds, this will be used as the build context. Must
                      be relative to the root of the repo.
                    "termination": {
                        "grace_period_seconds": 0  #
                          Optional. The number of seconds to wait between sending a
                          TERM signal to a container and issuing a KILL which causes
                          immediate shutdown. (Default 120).
                    }
                }
            ],
            "region": "str",  # Optional. The slug form of the
              geographical origin of the app. Default: ``nearest available``. Known
              values are: "ams", "nyc", "fra", "sfo", "sgp", "blr", "tor", "lon", and
              "syd".
            "services": [
                {
                    "autoscaling": {
                        "max_instance_count": 0,  # Optional.
                          The maximum amount of instances for this component. Must be
                          more than min_instance_count.
                        "metrics": {
                            "cpu": {
                                "percent": 80  #
                                  Optional. Default value is 80. The average target CPU
                                  utilization for the component.
                            }
                        },
                        "min_instance_count": 0  # Optional.
                          The minimum amount of instances for this component. Must be
                          less than max_instance_count.
                    },
                    "build_command": "str",  # Optional. An
                      optional build command to run while building this component from
                      source.
                    "cors": {
                        "allow_credentials": bool,  #
                          Optional. Whether browsers should expose the response to the
                          client-side JavaScript code when the request"u2019s
                          credentials mode is include. This configures the
                          ``Access-Control-Allow-Credentials`` header.
                        "allow_headers": [
                            "str"  # Optional. The set of
                              allowed HTTP request headers. This configures the
                              ``Access-Control-Allow-Headers`` header.
                        ],
                        "allow_methods": [
                            "str"  # Optional. The set of
                              allowed HTTP methods. This configures the
                              ``Access-Control-Allow-Methods`` header.
                        ],
                        "allow_origins": [
                            {
                                "exact": "str",  #
                                  Optional. Exact string match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "prefix": "str",  #
                                  Optional. Prefix-based match. Only 1 of ``exact``"" ,
                                  ``prefix``"" , or ``regex`` must be set.
                                "regex": "str"  #
                                  Optional. RE2 style regex-based match. Only 1 of
                                  ``exact``"" , ``prefix``"" , or ``regex`` must be
                                  set. For more information about RE2 syntax, see:
                                  https://github.com/google/re2/wiki/Syntax.
                            }
                        ],
                        "expose_headers": [
                            "str"  # Optional. The set of
                              HTTP response headers that browsers are allowed to
                              access. This configures the
                              ``Access-Control-Expose-Headers`` header.
                        ],
                        "max_age": "str"  # Optional. An
                          optional duration specifying how long browsers can cache the
                          results of a preflight request. This configures the
                          ``Access-Control-Max-Age`` header.
                    },
                    "dockerfile_path": "str",  # Optional. The
                      path to the Dockerfile relative to the root of the repo. If set,
                      it will be used to build this component. Otherwise, App Platform
                      will attempt to build it using buildpacks.
                    "environment_slug": "str",  # Optional. An
                      environment slug describing the type of this app. For a full
                      list, please refer to `the product documentation
                      <https://docs.digitalocean.com/products/app-platform/>`_.
                    "envs": [
                        {
                            "key": "str",  # The variable
                              name. Required.
                            "scope":
                              "RUN_AND_BUILD_TIME",  # Optional. Default value is
                              "RUN_AND_BUILD_TIME". * RUN_TIME: Made available only at
                              run-time * BUILD_TIME: Made available only at build-time
                              * RUN_AND_BUILD_TIME: Made available at both build and
                              run-time. Known values are: "UNSET", "RUN_TIME",
                              "BUILD_TIME", and "RUN_AND_BUILD_TIME".
                            "type": "GENERAL",  #
                              Optional. Default value is "GENERAL". * GENERAL: A
                              plain-text environment variable * SECRET: A secret
                              encrypted environment variable. Known values are:
                              "GENERAL" and "SECRET".
                            "value": "str"  # Optional.
                              The value. If the type is ``SECRET``"" , the value will
                              be encrypted on first submission. On following
                              submissions, the encrypted value should be used.
                        }
                    ],
                    "git": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "repo_clone_url": "str"  # Optional.
                          The clone URL of the repo. Example:
                          ``https://github.com/digitalocean/sample-golang.git``.
                    },
                    "github": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "gitlab": {
                        "branch": "str",  # Optional. The
                          name of the branch to use.
                        "deploy_on_push": bool,  # Optional.
                          Whether to automatically deploy new commits made to the repo.
                        "repo": "str"  # Optional. The name
                          of the repo in the format owner/repo. Example:
                          ``digitalocean/sample-golang``.
                    },
                    "health_check": {
                        "failure_threshold": 0,  # Optional.
                          The number of failed health checks before considered
                          unhealthy.
                        "http_path": "str",  # Optional. The
                          route path used for the HTTP health check ping. If not set,
                          the HTTP health check will be disabled and a TCP health check
                          used instead.
                        "initial_delay_seconds": 0,  #
                          Optional. The number of seconds to wait before beginning
                          health checks.
                        "period_seconds": 0,  # Optional. The
                          number of seconds to wait between health checks.
                        "port": 0,  # Optional. 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.
                        "success_threshold": 0,  # Optional.
                          The number of successful health checks before considered
                          healthy.
                        "timeout_seconds": 0  # Optional. The
                          number of seconds after which the check times out.
                    },
                    "http_port": 0,  # Optional. The internal
                      port on which this service's run command will listen. Default:
                      8080 If there is not an environment variable with the name
                      ``PORT``"" , one will be automatically added with its value set
                      to the value of this field.
                    "image": {
                        "deploy_on_push": {
                            "enabled": bool  # Optional.
                              Whether to automatically deploy new images. Can only be
                              used for images hosted in DOCR and can only be used with
                              an image tag, not a specific digest.
                        },
                        "digest": "str",  # Optional. The
                          image digest. Cannot be specified if tag is provided.
                        "registry": "str",  # Optional. The
                          registry name. Must be left empty for the ``DOCR`` registry
                          type.
                        "registry_credentials": "str",  #
                          Optional. The credentials to be able to pull the image. The
                          value will be encrypted on first submission. On following
                          submissions, the encrypted value should be used.   *
                          "$username:$access_token" for registries of type
                          ``DOCKER_HUB``. * "$username:$access_token" for registries of
                          type ``GHCR``.
                        "registry_type": "str",  # Optional.
                          * DOCKER_HUB: The DockerHub container registry type. * DOCR:
                          The DigitalOcean container registry type. * GHCR: The Github
                          container registry type. Known values are: "DOCKER_HUB",
                          "DOCR", and "GHCR".
                        "repository": "str",  # Optional. The
                          repository name.
                        "tag": "latest"  # Optional. Default
                          value is "latest". The repository tag. Defaults to ``latest``
                          if not provided and no digest is provided. Cannot be
                          specified if digest is provided.
                    },
                    "instance_count": 1,  # Optional. Default
                      value is 1. The amount of instances that this component should be
                      scaled to. Default: 1. Must not be set if autoscaling is used.
                    "instance_size_slug": "apps-s-1vcpu-0.5gb",
                      # Optional. Default value is "apps-s-1vcpu-0.5gb". The instance
                      size to use for this component. Default: ``apps-s-1vcpu-0.5gb``.
                      Known values are: "apps-s-1vcpu-0.5gb", "apps-s-1vcpu-1gb-fixed",
                      "apps-s-1vcpu-1gb", "apps-s-1vcpu-2gb", "apps-s-2vcpu-4gb",
                      "apps-d-1vcpu-0.5gb", "apps-d-1vcpu-1gb", "apps-d-1vcpu-2gb",
                      "apps-d-1vcpu-4gb", "apps-d-2vcpu-4gb", "apps-d-2vcpu-8gb",
                      "apps-d-4vcpu-8gb", "apps-d-4vcpu-16gb", and "apps-d-8vcpu-32gb".
                    "internal_ports": [
                        0  # Optional. The ports on which
                          this service will listen for internal traffic.
                    ],
                    "log_destinations": [
                        {
                            "name": "str",  # Required.
                            "datadog": {
                                "api_key": "str",  #
                                  Datadog API key. Required.
                                "endpoint": "str"  #
                                  Optional. Datadog HTTP log intake endpoint.
                            },
                            "logtail": {
                                "token": "str"  #
                                  Optional. Logtail token.
                            },
                            "open_search": {
                                "basic_auth": {
                                    "password":
                                      {},  # Optional. Password for user defined in
                                      User. Is required when ``endpoint`` is set.
                                      Cannot be set if using a DigitalOcean DBaaS
                                      OpenSearch cluster.
                                    "user": "str"
                                      # Optional. Username to authenticate with. Only
                                      required when ``endpoint`` is set. Defaults to
                                      ``doadmin`` when ``cluster_name`` is set.
                                },
                                "cluster_name":
                                  "str",  # Optional. The name of a DigitalOcean DBaaS
                                  OpenSearch cluster to use as a log forwarding
                                  destination. Cannot be specified if ``endpoint`` is
                                  also specified.
                                "endpoint": "str",  #
                                  Optional. OpenSearch API Endpoint. Only HTTPS is
                                  supported. Format:
                                  https://:code:`<host>`::code:`<port>`. Cannot be
                                  specified if ``cluster_name`` is also specified.
                                "index_name": "logs"
                                  # Optional. Default value is "logs". The index name
                                  to use for the logs. If not set, the default index
                                  name is "logs".
                            },
                            "papertrail": {
                                "endpoint": "str"  #
                                  Papertrail syslog endpoint. Required.
                            }
                        }
                    ],
                    "name": "str",  # Optional. The name. Must be
                      unique across all components w