1// Copyright 2021 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.v1beta; 18 19import "google/protobuf/duration.proto"; 20 21option csharp_namespace = "Google.Cloud.AppEngine.V1Beta"; 22option go_package = "google.golang.org/genproto/googleapis/appengine/v1beta;appengine"; 23option java_multiple_files = true; 24option java_outer_classname = "ApplicationProto"; 25option java_package = "com.google.appengine.v1beta"; 26option php_namespace = "Google\\Cloud\\AppEngine\\V1beta"; 27option ruby_package = "Google::Cloud::AppEngine::V1beta"; 28 29// An Application resource contains the top-level configuration of an App 30// Engine application. 31message Application { 32 // Identity-Aware Proxy 33 message IdentityAwareProxy { 34 // Whether the serving infrastructure will authenticate and 35 // authorize all incoming requests. 36 // 37 // If true, the `oauth2_client_id` and `oauth2_client_secret` 38 // fields must be non-empty. 39 bool enabled = 1; 40 41 // OAuth2 client ID to use for the authentication flow. 42 string oauth2_client_id = 2; 43 44 // OAuth2 client secret to use for the authentication flow. 45 // 46 // For security reasons, this value cannot be retrieved via the API. 47 // Instead, the SHA-256 hash of the value is returned in the 48 // `oauth2_client_secret_sha256` field. 49 // 50 // @InputOnly 51 string oauth2_client_secret = 3; 52 53 // Hex-encoded SHA-256 hash of the client secret. 54 // 55 // @OutputOnly 56 string oauth2_client_secret_sha256 = 4; 57 } 58 59 // The feature specific settings to be used in the application. These define 60 // behaviors that are user configurable. 61 message FeatureSettings { 62 // Boolean value indicating if split health checks should be used instead 63 // of the legacy health checks. At an app.yaml level, this means defaulting 64 // to 'readiness_check' and 'liveness_check' values instead of 65 // 'health_check' ones. Once the legacy 'health_check' behavior is 66 // deprecated, and this value is always true, this setting can 67 // be removed. 68 bool split_health_checks = 1; 69 70 // If true, use [Container-Optimized OS](https://cloud.google.com/container-optimized-os/) 71 // base image for VMs, rather than a base Debian image. 72 bool use_container_optimized_os = 2; 73 } 74 75 enum ServingStatus { 76 // Serving status is unspecified. 77 UNSPECIFIED = 0; 78 79 // Application is serving. 80 SERVING = 1; 81 82 // Application has been disabled by the user. 83 USER_DISABLED = 2; 84 85 // Application has been disabled by the system. 86 SYSTEM_DISABLED = 3; 87 } 88 89 enum DatabaseType { 90 // Database type is unspecified. 91 DATABASE_TYPE_UNSPECIFIED = 0; 92 93 // Cloud Datastore 94 CLOUD_DATASTORE = 1; 95 96 // Cloud Firestore Native 97 CLOUD_FIRESTORE = 2; 98 99 // Cloud Firestore in Datastore Mode 100 CLOUD_DATASTORE_COMPATIBILITY = 3; 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 IdentityAwareProxy iap = 14; 161 162 // The Google Container Registry domain used for storing managed build docker 163 // images for this application. 164 string gcr_domain = 16; 165 166 // The type of the Cloud Firestore or Cloud Datastore database associated with 167 // this application. 168 DatabaseType database_type = 17; 169 170 // The feature specific settings to be used in the application. 171 FeatureSettings feature_settings = 18; 172} 173 174// Rules to match an HTTP request and dispatch that request to a service. 175message UrlDispatchRule { 176 // Domain name to match against. The wildcard "`*`" is supported if 177 // specified before a period: "`*.`". 178 // 179 // Defaults to matching all domains: "`*`". 180 string domain = 1; 181 182 // Pathname within the host. Must start with a "`/`". A 183 // single "`*`" can be included at the end of the path. 184 // 185 // The sum of the lengths of the domain and path may not 186 // exceed 100 characters. 187 string path = 2; 188 189 // Resource ID of a service in this application that should 190 // serve the matched request. The service must already 191 // exist. Example: `default`. 192 string service = 3; 193} 194