1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.appengine.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 20*d5c09012SAndroid Build Coastguard Worker 21*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.AppEngine.V1"; 22*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/appengine/apiv1/appenginepb;appenginepb"; 23*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 24*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "AppYamlProto"; 25*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.appengine.v1"; 26*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\AppEngine\\V1"; 27*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::AppEngine::V1"; 28*d5c09012SAndroid Build Coastguard Worker 29*d5c09012SAndroid Build Coastguard Worker// [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) 30*d5c09012SAndroid Build Coastguard Worker// configuration for API handlers. 31*d5c09012SAndroid Build Coastguard Workermessage ApiConfigHandler { 32*d5c09012SAndroid Build Coastguard Worker // Action to take when users access resources that require 33*d5c09012SAndroid Build Coastguard Worker // authentication. Defaults to `redirect`. 34*d5c09012SAndroid Build Coastguard Worker AuthFailAction auth_fail_action = 1; 35*d5c09012SAndroid Build Coastguard Worker 36*d5c09012SAndroid Build Coastguard Worker // Level of login required to access this resource. Defaults to 37*d5c09012SAndroid Build Coastguard Worker // `optional`. 38*d5c09012SAndroid Build Coastguard Worker LoginRequirement login = 2; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // Path to the script from the application root directory. 41*d5c09012SAndroid Build Coastguard Worker string script = 3; 42*d5c09012SAndroid Build Coastguard Worker 43*d5c09012SAndroid Build Coastguard Worker // Security (HTTPS) enforcement for this URL. 44*d5c09012SAndroid Build Coastguard Worker SecurityLevel security_level = 4; 45*d5c09012SAndroid Build Coastguard Worker 46*d5c09012SAndroid Build Coastguard Worker // URL to serve the endpoint at. 47*d5c09012SAndroid Build Coastguard Worker string url = 5; 48*d5c09012SAndroid Build Coastguard Worker} 49*d5c09012SAndroid Build Coastguard Worker 50*d5c09012SAndroid Build Coastguard Worker// Custom static error page to be served when an error occurs. 51*d5c09012SAndroid Build Coastguard Workermessage ErrorHandler { 52*d5c09012SAndroid Build Coastguard Worker // Error codes. 53*d5c09012SAndroid Build Coastguard Worker enum ErrorCode { 54*d5c09012SAndroid Build Coastguard Worker option allow_alias = true; 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Worker // Not specified. ERROR_CODE_DEFAULT is assumed. 57*d5c09012SAndroid Build Coastguard Worker ERROR_CODE_UNSPECIFIED = 0; 58*d5c09012SAndroid Build Coastguard Worker 59*d5c09012SAndroid Build Coastguard Worker // All other error types. 60*d5c09012SAndroid Build Coastguard Worker ERROR_CODE_DEFAULT = 0; 61*d5c09012SAndroid Build Coastguard Worker 62*d5c09012SAndroid Build Coastguard Worker // Application has exceeded a resource quota. 63*d5c09012SAndroid Build Coastguard Worker ERROR_CODE_OVER_QUOTA = 1; 64*d5c09012SAndroid Build Coastguard Worker 65*d5c09012SAndroid Build Coastguard Worker // Client blocked by the application's Denial of Service protection 66*d5c09012SAndroid Build Coastguard Worker // configuration. 67*d5c09012SAndroid Build Coastguard Worker ERROR_CODE_DOS_API_DENIAL = 2; 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker // Deadline reached before the application responds. 70*d5c09012SAndroid Build Coastguard Worker ERROR_CODE_TIMEOUT = 3; 71*d5c09012SAndroid Build Coastguard Worker } 72*d5c09012SAndroid Build Coastguard Worker 73*d5c09012SAndroid Build Coastguard Worker // Error condition this handler applies to. 74*d5c09012SAndroid Build Coastguard Worker ErrorCode error_code = 1; 75*d5c09012SAndroid Build Coastguard Worker 76*d5c09012SAndroid Build Coastguard Worker // Static file content to be served for this error. 77*d5c09012SAndroid Build Coastguard Worker string static_file = 2; 78*d5c09012SAndroid Build Coastguard Worker 79*d5c09012SAndroid Build Coastguard Worker // MIME type of file. Defaults to `text/html`. 80*d5c09012SAndroid Build Coastguard Worker string mime_type = 3; 81*d5c09012SAndroid Build Coastguard Worker} 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker// URL pattern and description of how the URL should be handled. App Engine can 84*d5c09012SAndroid Build Coastguard Worker// handle URLs by executing application code or by serving static files 85*d5c09012SAndroid Build Coastguard Worker// uploaded with the version, such as images, CSS, or JavaScript. 86*d5c09012SAndroid Build Coastguard Workermessage UrlMap { 87*d5c09012SAndroid Build Coastguard Worker // Redirect codes. 88*d5c09012SAndroid Build Coastguard Worker enum RedirectHttpResponseCode { 89*d5c09012SAndroid Build Coastguard Worker // Not specified. `302` is assumed. 90*d5c09012SAndroid Build Coastguard Worker REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED = 0; 91*d5c09012SAndroid Build Coastguard Worker 92*d5c09012SAndroid Build Coastguard Worker // `301 Moved Permanently` code. 93*d5c09012SAndroid Build Coastguard Worker REDIRECT_HTTP_RESPONSE_CODE_301 = 1; 94*d5c09012SAndroid Build Coastguard Worker 95*d5c09012SAndroid Build Coastguard Worker // `302 Moved Temporarily` code. 96*d5c09012SAndroid Build Coastguard Worker REDIRECT_HTTP_RESPONSE_CODE_302 = 2; 97*d5c09012SAndroid Build Coastguard Worker 98*d5c09012SAndroid Build Coastguard Worker // `303 See Other` code. 99*d5c09012SAndroid Build Coastguard Worker REDIRECT_HTTP_RESPONSE_CODE_303 = 3; 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker // `307 Temporary Redirect` code. 102*d5c09012SAndroid Build Coastguard Worker REDIRECT_HTTP_RESPONSE_CODE_307 = 4; 103*d5c09012SAndroid Build Coastguard Worker } 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // URL prefix. Uses regular expression syntax, which means regexp 106*d5c09012SAndroid Build Coastguard Worker // special characters must be escaped, but should not contain groupings. 107*d5c09012SAndroid Build Coastguard Worker // All URLs that begin with this prefix are handled by this handler, using the 108*d5c09012SAndroid Build Coastguard Worker // portion of the URL after the prefix as part of the file path. 109*d5c09012SAndroid Build Coastguard Worker string url_regex = 1; 110*d5c09012SAndroid Build Coastguard Worker 111*d5c09012SAndroid Build Coastguard Worker // Type of handler for this URL pattern. 112*d5c09012SAndroid Build Coastguard Worker oneof handler_type { 113*d5c09012SAndroid Build Coastguard Worker // Returns the contents of a file, such as an image, as the response. 114*d5c09012SAndroid Build Coastguard Worker StaticFilesHandler static_files = 2; 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker // Executes a script to handle the requests that match this URL 117*d5c09012SAndroid Build Coastguard Worker // pattern. Only the `auto` value is supported for Node.js in the 118*d5c09012SAndroid Build Coastguard Worker // App Engine standard environment, for example `"script": "auto"`. 119*d5c09012SAndroid Build Coastguard Worker ScriptHandler script = 3; 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Uses API Endpoints to handle requests. 122*d5c09012SAndroid Build Coastguard Worker ApiEndpointHandler api_endpoint = 4; 123*d5c09012SAndroid Build Coastguard Worker } 124*d5c09012SAndroid Build Coastguard Worker 125*d5c09012SAndroid Build Coastguard Worker // Security (HTTPS) enforcement for this URL. 126*d5c09012SAndroid Build Coastguard Worker SecurityLevel security_level = 5; 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker // Level of login required to access this resource. Not supported for Node.js 129*d5c09012SAndroid Build Coastguard Worker // in the App Engine standard environment. 130*d5c09012SAndroid Build Coastguard Worker LoginRequirement login = 6; 131*d5c09012SAndroid Build Coastguard Worker 132*d5c09012SAndroid Build Coastguard Worker // Action to take when users access resources that require 133*d5c09012SAndroid Build Coastguard Worker // authentication. Defaults to `redirect`. 134*d5c09012SAndroid Build Coastguard Worker AuthFailAction auth_fail_action = 7; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // `30x` code to use when performing redirects for the `secure` field. 137*d5c09012SAndroid Build Coastguard Worker // Defaults to `302`. 138*d5c09012SAndroid Build Coastguard Worker RedirectHttpResponseCode redirect_http_response_code = 8; 139*d5c09012SAndroid Build Coastguard Worker} 140*d5c09012SAndroid Build Coastguard Worker 141*d5c09012SAndroid Build Coastguard Worker// Files served directly to the user for a given URL, such as images, CSS 142*d5c09012SAndroid Build Coastguard Worker// stylesheets, or JavaScript source files. Static file handlers describe which 143*d5c09012SAndroid Build Coastguard Worker// files in the application directory are static files, and which URLs serve 144*d5c09012SAndroid Build Coastguard Worker// them. 145*d5c09012SAndroid Build Coastguard Workermessage StaticFilesHandler { 146*d5c09012SAndroid Build Coastguard Worker // Path to the static files matched by the URL pattern, from the 147*d5c09012SAndroid Build Coastguard Worker // application root directory. The path can refer to text matched in groupings 148*d5c09012SAndroid Build Coastguard Worker // in the URL pattern. 149*d5c09012SAndroid Build Coastguard Worker string path = 1; 150*d5c09012SAndroid Build Coastguard Worker 151*d5c09012SAndroid Build Coastguard Worker // Regular expression that matches the file paths for all files that should be 152*d5c09012SAndroid Build Coastguard Worker // referenced by this handler. 153*d5c09012SAndroid Build Coastguard Worker string upload_path_regex = 2; 154*d5c09012SAndroid Build Coastguard Worker 155*d5c09012SAndroid Build Coastguard Worker // HTTP headers to use for all responses from these URLs. 156*d5c09012SAndroid Build Coastguard Worker map<string, string> http_headers = 3; 157*d5c09012SAndroid Build Coastguard Worker 158*d5c09012SAndroid Build Coastguard Worker // MIME type used to serve all files served by this handler. 159*d5c09012SAndroid Build Coastguard Worker // 160*d5c09012SAndroid Build Coastguard Worker // Defaults to file-specific MIME types, which are derived from each file's 161*d5c09012SAndroid Build Coastguard Worker // filename extension. 162*d5c09012SAndroid Build Coastguard Worker string mime_type = 4; 163*d5c09012SAndroid Build Coastguard Worker 164*d5c09012SAndroid Build Coastguard Worker // Time a static file served by this handler should be cached 165*d5c09012SAndroid Build Coastguard Worker // by web proxies and browsers. 166*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration expiration = 5; 167*d5c09012SAndroid Build Coastguard Worker 168*d5c09012SAndroid Build Coastguard Worker // Whether this handler should match the request if the file 169*d5c09012SAndroid Build Coastguard Worker // referenced by the handler does not exist. 170*d5c09012SAndroid Build Coastguard Worker bool require_matching_file = 6; 171*d5c09012SAndroid Build Coastguard Worker 172*d5c09012SAndroid Build Coastguard Worker // Whether files should also be uploaded as code data. By default, files 173*d5c09012SAndroid Build Coastguard Worker // declared in static file handlers are uploaded as static 174*d5c09012SAndroid Build Coastguard Worker // data and are only served to end users; they cannot be read by the 175*d5c09012SAndroid Build Coastguard Worker // application. If enabled, uploads are charged against both your code and 176*d5c09012SAndroid Build Coastguard Worker // static data storage resource quotas. 177*d5c09012SAndroid Build Coastguard Worker bool application_readable = 7; 178*d5c09012SAndroid Build Coastguard Worker} 179*d5c09012SAndroid Build Coastguard Worker 180*d5c09012SAndroid Build Coastguard Worker// Executes a script to handle the request that matches the URL pattern. 181*d5c09012SAndroid Build Coastguard Workermessage ScriptHandler { 182*d5c09012SAndroid Build Coastguard Worker // Path to the script from the application root directory. 183*d5c09012SAndroid Build Coastguard Worker string script_path = 1; 184*d5c09012SAndroid Build Coastguard Worker} 185*d5c09012SAndroid Build Coastguard Worker 186*d5c09012SAndroid Build Coastguard Worker// Uses Google Cloud Endpoints to handle requests. 187*d5c09012SAndroid Build Coastguard Workermessage ApiEndpointHandler { 188*d5c09012SAndroid Build Coastguard Worker // Path to the script from the application root directory. 189*d5c09012SAndroid Build Coastguard Worker string script_path = 1; 190*d5c09012SAndroid Build Coastguard Worker} 191*d5c09012SAndroid Build Coastguard Worker 192*d5c09012SAndroid Build Coastguard Worker// Health checking configuration for VM instances. Unhealthy instances 193*d5c09012SAndroid Build Coastguard Worker// are killed and replaced with new instances. Only applicable for 194*d5c09012SAndroid Build Coastguard Worker// instances in App Engine flexible environment. 195*d5c09012SAndroid Build Coastguard Workermessage HealthCheck { 196*d5c09012SAndroid Build Coastguard Worker // Whether to explicitly disable health checks for this instance. 197*d5c09012SAndroid Build Coastguard Worker bool disable_health_check = 1; 198*d5c09012SAndroid Build Coastguard Worker 199*d5c09012SAndroid Build Coastguard Worker // Host header to send when performing an HTTP health check. 200*d5c09012SAndroid Build Coastguard Worker // Example: "myapp.appspot.com" 201*d5c09012SAndroid Build Coastguard Worker string host = 2; 202*d5c09012SAndroid Build Coastguard Worker 203*d5c09012SAndroid Build Coastguard Worker // Number of consecutive successful health checks required before receiving 204*d5c09012SAndroid Build Coastguard Worker // traffic. 205*d5c09012SAndroid Build Coastguard Worker uint32 healthy_threshold = 3; 206*d5c09012SAndroid Build Coastguard Worker 207*d5c09012SAndroid Build Coastguard Worker // Number of consecutive failed health checks required before removing 208*d5c09012SAndroid Build Coastguard Worker // traffic. 209*d5c09012SAndroid Build Coastguard Worker uint32 unhealthy_threshold = 4; 210*d5c09012SAndroid Build Coastguard Worker 211*d5c09012SAndroid Build Coastguard Worker // Number of consecutive failed health checks required before an instance is 212*d5c09012SAndroid Build Coastguard Worker // restarted. 213*d5c09012SAndroid Build Coastguard Worker uint32 restart_threshold = 5; 214*d5c09012SAndroid Build Coastguard Worker 215*d5c09012SAndroid Build Coastguard Worker // Interval between health checks. 216*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration check_interval = 6; 217*d5c09012SAndroid Build Coastguard Worker 218*d5c09012SAndroid Build Coastguard Worker // Time before the health check is considered failed. 219*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration timeout = 7; 220*d5c09012SAndroid Build Coastguard Worker} 221*d5c09012SAndroid Build Coastguard Worker 222*d5c09012SAndroid Build Coastguard Worker// Readiness checking configuration for VM instances. Unhealthy instances 223*d5c09012SAndroid Build Coastguard Worker// are removed from traffic rotation. 224*d5c09012SAndroid Build Coastguard Workermessage ReadinessCheck { 225*d5c09012SAndroid Build Coastguard Worker // The request path. 226*d5c09012SAndroid Build Coastguard Worker string path = 1; 227*d5c09012SAndroid Build Coastguard Worker 228*d5c09012SAndroid Build Coastguard Worker // Host header to send when performing a HTTP Readiness check. 229*d5c09012SAndroid Build Coastguard Worker // Example: "myapp.appspot.com" 230*d5c09012SAndroid Build Coastguard Worker string host = 2; 231*d5c09012SAndroid Build Coastguard Worker 232*d5c09012SAndroid Build Coastguard Worker // Number of consecutive failed checks required before removing 233*d5c09012SAndroid Build Coastguard Worker // traffic. 234*d5c09012SAndroid Build Coastguard Worker uint32 failure_threshold = 3; 235*d5c09012SAndroid Build Coastguard Worker 236*d5c09012SAndroid Build Coastguard Worker // Number of consecutive successful checks required before receiving 237*d5c09012SAndroid Build Coastguard Worker // traffic. 238*d5c09012SAndroid Build Coastguard Worker uint32 success_threshold = 4; 239*d5c09012SAndroid Build Coastguard Worker 240*d5c09012SAndroid Build Coastguard Worker // Interval between health checks. 241*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration check_interval = 5; 242*d5c09012SAndroid Build Coastguard Worker 243*d5c09012SAndroid Build Coastguard Worker // Time before the check is considered failed. 244*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration timeout = 6; 245*d5c09012SAndroid Build Coastguard Worker 246*d5c09012SAndroid Build Coastguard Worker // A maximum time limit on application initialization, measured from moment 247*d5c09012SAndroid Build Coastguard Worker // the application successfully replies to a healthcheck until it is ready to 248*d5c09012SAndroid Build Coastguard Worker // serve traffic. 249*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration app_start_timeout = 7; 250*d5c09012SAndroid Build Coastguard Worker} 251*d5c09012SAndroid Build Coastguard Worker 252*d5c09012SAndroid Build Coastguard Worker// Health checking configuration for VM instances. Unhealthy instances 253*d5c09012SAndroid Build Coastguard Worker// are killed and replaced with new instances. 254*d5c09012SAndroid Build Coastguard Workermessage LivenessCheck { 255*d5c09012SAndroid Build Coastguard Worker // The request path. 256*d5c09012SAndroid Build Coastguard Worker string path = 1; 257*d5c09012SAndroid Build Coastguard Worker 258*d5c09012SAndroid Build Coastguard Worker // Host header to send when performing a HTTP Liveness check. 259*d5c09012SAndroid Build Coastguard Worker // Example: "myapp.appspot.com" 260*d5c09012SAndroid Build Coastguard Worker string host = 2; 261*d5c09012SAndroid Build Coastguard Worker 262*d5c09012SAndroid Build Coastguard Worker // Number of consecutive failed checks required before considering the 263*d5c09012SAndroid Build Coastguard Worker // VM unhealthy. 264*d5c09012SAndroid Build Coastguard Worker uint32 failure_threshold = 3; 265*d5c09012SAndroid Build Coastguard Worker 266*d5c09012SAndroid Build Coastguard Worker // Number of consecutive successful checks required before considering 267*d5c09012SAndroid Build Coastguard Worker // the VM healthy. 268*d5c09012SAndroid Build Coastguard Worker uint32 success_threshold = 4; 269*d5c09012SAndroid Build Coastguard Worker 270*d5c09012SAndroid Build Coastguard Worker // Interval between health checks. 271*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration check_interval = 5; 272*d5c09012SAndroid Build Coastguard Worker 273*d5c09012SAndroid Build Coastguard Worker // Time before the check is considered failed. 274*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration timeout = 6; 275*d5c09012SAndroid Build Coastguard Worker 276*d5c09012SAndroid Build Coastguard Worker // The initial delay before starting to execute the checks. 277*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration initial_delay = 7; 278*d5c09012SAndroid Build Coastguard Worker} 279*d5c09012SAndroid Build Coastguard Worker 280*d5c09012SAndroid Build Coastguard Worker// Third-party Python runtime library that is required by the application. 281*d5c09012SAndroid Build Coastguard Workermessage Library { 282*d5c09012SAndroid Build Coastguard Worker // Name of the library. Example: "django". 283*d5c09012SAndroid Build Coastguard Worker string name = 1; 284*d5c09012SAndroid Build Coastguard Worker 285*d5c09012SAndroid Build Coastguard Worker // Version of the library to select, or "latest". 286*d5c09012SAndroid Build Coastguard Worker string version = 2; 287*d5c09012SAndroid Build Coastguard Worker} 288*d5c09012SAndroid Build Coastguard Worker 289*d5c09012SAndroid Build Coastguard Worker// Actions to take when the user is not logged in. 290*d5c09012SAndroid Build Coastguard Workerenum AuthFailAction { 291*d5c09012SAndroid Build Coastguard Worker // Not specified. `AUTH_FAIL_ACTION_REDIRECT` is assumed. 292*d5c09012SAndroid Build Coastguard Worker AUTH_FAIL_ACTION_UNSPECIFIED = 0; 293*d5c09012SAndroid Build Coastguard Worker 294*d5c09012SAndroid Build Coastguard Worker // Redirects user to "accounts.google.com". The user is redirected back to the 295*d5c09012SAndroid Build Coastguard Worker // application URL after signing in or creating an account. 296*d5c09012SAndroid Build Coastguard Worker AUTH_FAIL_ACTION_REDIRECT = 1; 297*d5c09012SAndroid Build Coastguard Worker 298*d5c09012SAndroid Build Coastguard Worker // Rejects request with a `401` HTTP status code and an error 299*d5c09012SAndroid Build Coastguard Worker // message. 300*d5c09012SAndroid Build Coastguard Worker AUTH_FAIL_ACTION_UNAUTHORIZED = 2; 301*d5c09012SAndroid Build Coastguard Worker} 302*d5c09012SAndroid Build Coastguard Worker 303*d5c09012SAndroid Build Coastguard Worker// Methods to restrict access to a URL based on login status. 304*d5c09012SAndroid Build Coastguard Workerenum LoginRequirement { 305*d5c09012SAndroid Build Coastguard Worker // Not specified. `LOGIN_OPTIONAL` is assumed. 306*d5c09012SAndroid Build Coastguard Worker LOGIN_UNSPECIFIED = 0; 307*d5c09012SAndroid Build Coastguard Worker 308*d5c09012SAndroid Build Coastguard Worker // Does not require that the user is signed in. 309*d5c09012SAndroid Build Coastguard Worker LOGIN_OPTIONAL = 1; 310*d5c09012SAndroid Build Coastguard Worker 311*d5c09012SAndroid Build Coastguard Worker // If the user is not signed in, the `auth_fail_action` is taken. 312*d5c09012SAndroid Build Coastguard Worker // In addition, if the user is not an administrator for the 313*d5c09012SAndroid Build Coastguard Worker // application, they are given an error message regardless of 314*d5c09012SAndroid Build Coastguard Worker // `auth_fail_action`. If the user is an administrator, the handler 315*d5c09012SAndroid Build Coastguard Worker // proceeds. 316*d5c09012SAndroid Build Coastguard Worker LOGIN_ADMIN = 2; 317*d5c09012SAndroid Build Coastguard Worker 318*d5c09012SAndroid Build Coastguard Worker // If the user has signed in, the handler proceeds normally. Otherwise, the 319*d5c09012SAndroid Build Coastguard Worker // auth_fail_action is taken. 320*d5c09012SAndroid Build Coastguard Worker LOGIN_REQUIRED = 3; 321*d5c09012SAndroid Build Coastguard Worker} 322*d5c09012SAndroid Build Coastguard Worker 323*d5c09012SAndroid Build Coastguard Worker// Methods to enforce security (HTTPS) on a URL. 324*d5c09012SAndroid Build Coastguard Workerenum SecurityLevel { 325*d5c09012SAndroid Build Coastguard Worker option allow_alias = true; 326*d5c09012SAndroid Build Coastguard Worker 327*d5c09012SAndroid Build Coastguard Worker // Not specified. 328*d5c09012SAndroid Build Coastguard Worker SECURE_UNSPECIFIED = 0; 329*d5c09012SAndroid Build Coastguard Worker 330*d5c09012SAndroid Build Coastguard Worker // Both HTTP and HTTPS requests with URLs that match the handler succeed 331*d5c09012SAndroid Build Coastguard Worker // without redirects. The application can examine the request to determine 332*d5c09012SAndroid Build Coastguard Worker // which protocol was used, and respond accordingly. 333*d5c09012SAndroid Build Coastguard Worker SECURE_DEFAULT = 0; 334*d5c09012SAndroid Build Coastguard Worker 335*d5c09012SAndroid Build Coastguard Worker // Requests for a URL that match this handler that use HTTPS are automatically 336*d5c09012SAndroid Build Coastguard Worker // redirected to the HTTP equivalent URL. 337*d5c09012SAndroid Build Coastguard Worker SECURE_NEVER = 1; 338*d5c09012SAndroid Build Coastguard Worker 339*d5c09012SAndroid Build Coastguard Worker // Both HTTP and HTTPS requests with URLs that match the handler succeed 340*d5c09012SAndroid Build Coastguard Worker // without redirects. The application can examine the request to determine 341*d5c09012SAndroid Build Coastguard Worker // which protocol was used and respond accordingly. 342*d5c09012SAndroid Build Coastguard Worker SECURE_OPTIONAL = 2; 343*d5c09012SAndroid Build Coastguard Worker 344*d5c09012SAndroid Build Coastguard Worker // Requests for a URL that match this handler that do not use HTTPS are 345*d5c09012SAndroid Build Coastguard Worker // automatically redirected to the HTTPS URL with the same path. Query 346*d5c09012SAndroid Build Coastguard Worker // parameters are reserved for the redirect. 347*d5c09012SAndroid Build Coastguard Worker SECURE_ALWAYS = 3; 348*d5c09012SAndroid Build Coastguard Worker} 349