1// Copyright 2022 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.appengine.v1; 18 19import "google/protobuf/duration.proto"; 20 21option csharp_namespace = "Google.Cloud.AppEngine.V1"; 22option go_package = "cloud.google.com/go/appengine/apiv1/appenginepb;appenginepb"; 23option java_multiple_files = true; 24option java_outer_classname = "ApplicationProto"; 25option java_package = "com.google.appengine.v1"; 26option php_namespace = "Google\\Cloud\\AppEngine\\V1"; 27option ruby_package = "Google::Cloud::AppEngine::V1"; 28 29// An Application resource contains the top-level configuration of an App 30// Engine application. 31message Application { 32 enum ServingStatus { 33 // Serving status is unspecified. 34 UNSPECIFIED = 0; 35 36 // Application is serving. 37 SERVING = 1; 38 39 // Application has been disabled by the user. 40 USER_DISABLED = 2; 41 42 // Application has been disabled by the system. 43 SYSTEM_DISABLED = 3; 44 } 45 46 // Identity-Aware Proxy 47 message IdentityAwareProxy { 48 // Whether the serving infrastructure will authenticate and 49 // authorize all incoming requests. 50 // 51 // If true, the `oauth2_client_id` and `oauth2_client_secret` 52 // fields must be non-empty. 53 bool enabled = 1; 54 55 // OAuth2 client ID to use for the authentication flow. 56 string oauth2_client_id = 2; 57 58 // OAuth2 client secret to use for the authentication flow. 59 // 60 // For security reasons, this value cannot be retrieved via the API. 61 // Instead, the SHA-256 hash of the value is returned in the 62 // `oauth2_client_secret_sha256` field. 63 // 64 // @InputOnly 65 string oauth2_client_secret = 3; 66 67 // Hex-encoded SHA-256 hash of the client secret. 68 // 69 // @OutputOnly 70 string oauth2_client_secret_sha256 = 4; 71 } 72 73 enum DatabaseType { 74 // Database type is unspecified. 75 DATABASE_TYPE_UNSPECIFIED = 0; 76 77 // Cloud Datastore 78 CLOUD_DATASTORE = 1; 79 80 // Cloud Firestore Native 81 CLOUD_FIRESTORE = 2; 82 83 // Cloud Firestore in Datastore Mode 84 CLOUD_DATASTORE_COMPATIBILITY = 3; 85 } 86 87 // The feature specific settings to be used in the application. These define 88 // behaviors that are user configurable. 89 message FeatureSettings { 90 // Boolean value indicating if split health checks should be used instead 91 // of the legacy health checks. At an app.yaml level, this means defaulting 92 // to 'readiness_check' and 'liveness_check' values instead of 93 // 'health_check' ones. Once the legacy 'health_check' behavior is 94 // deprecated, and this value is always true, this setting can 95 // be removed. 96 bool split_health_checks = 1; 97 98 // If true, use [Container-Optimized OS](https://cloud.google.com/container-optimized-os/) 99 // base image for VMs, rather than a base Debian image. 100 bool use_container_optimized_os = 2; 101 } 102 103 // Full path to the Application resource in the API. 104 // Example: `apps/myapp`. 105 // 106 // @OutputOnly 107 string name = 1; 108 109 // Identifier of the Application resource. This identifier is equivalent 110 // to the project ID of the Google Cloud Platform project where you want to 111 // deploy your application. 112 // Example: `myapp`. 113 string id = 2; 114 115 // HTTP path dispatch rules for requests to the application that do not 116 // explicitly target a service or version. Rules are order-dependent. 117 // Up to 20 dispatch rules can be supported. 118 repeated UrlDispatchRule dispatch_rules = 3; 119 120 // Google Apps authentication domain that controls which users can access 121 // this application. 122 // 123 // Defaults to open access for any Google Account. 124 string auth_domain = 6; 125 126 // Location from which this application runs. Application instances 127 // run out of the data centers in the specified location, which is also where 128 // all of the application's end user content is stored. 129 // 130 // Defaults to `us-central`. 131 // 132 // View the list of 133 // [supported locations](https://cloud.google.com/appengine/docs/locations). 134 string location_id = 7; 135 136 // Google Cloud Storage bucket that can be used for storing files 137 // associated with this application. This bucket is associated with the 138 // application and can be used by the gcloud deployment commands. 139 // 140 // @OutputOnly 141 string code_bucket = 8; 142 143 // Cookie expiration policy for this application. 144 google.protobuf.Duration default_cookie_expiration = 9; 145 146 // Serving status of this application. 147 ServingStatus serving_status = 10; 148 149 // Hostname used to reach this application, as resolved by App Engine. 150 // 151 // @OutputOnly 152 string default_hostname = 11; 153 154 // Google Cloud Storage bucket that can be used by this application to store 155 // content. 156 // 157 // @OutputOnly 158 string default_bucket = 12; 159 160 // The service account associated with the application. 161 // This is the app-level default identity. If no identity provided during 162 // create version, Admin API will fallback to this one. 163 string service_account = 13; 164 165 IdentityAwareProxy iap = 14; 166 167 // The Google Container Registry domain used for storing managed build docker 168 // images for this application. 169 string gcr_domain = 16; 170 171 // The type of the Cloud Firestore or Cloud Datastore database associated with 172 // this application. 173 DatabaseType database_type = 17; 174 175 // The feature specific settings to be used in the application. 176 FeatureSettings feature_settings = 18; 177} 178 179// Rules to match an HTTP request and dispatch that request to a service. 180message UrlDispatchRule { 181 // Domain name to match against. The wildcard "`*`" is supported if 182 // specified before a period: "`*.`". 183 // 184 // Defaults to matching all domains: "`*`". 185 string domain = 1; 186 187 // Pathname within the host. Must start with a "`/`". A 188 // single "`*`" can be included at the end of the path. 189 // 190 // The sum of the lengths of the domain and path may not 191 // exceed 100 characters. 192 string path = 2; 193 194 // Resource ID of a service in this application that should 195 // serve the matched request. The service must already 196 // exist. Example: `default`. 197 string service = 3; 198} 199