| // Copyright 2016 Google Inc. | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | syntax = "proto3"; | 
 |  | 
 | package google.appengine.v1; | 
 |  | 
 | import "google/api/annotations.proto"; | 
 | import "google/protobuf/duration.proto"; | 
 |  | 
 | option go_package = "google.golang.org/genproto/googleapis/appengine/v1;appengine"; | 
 | option java_multiple_files = true; | 
 | option java_outer_classname = "AppYamlProto"; | 
 | option java_package = "com.google.appengine.v1"; | 
 |  | 
 |  | 
 | // [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) | 
 | // configuration for API handlers. | 
 | message ApiConfigHandler { | 
 |   // Action to take when users access resources that require | 
 |   // authentication. Defaults to `redirect`. | 
 |   AuthFailAction auth_fail_action = 1; | 
 |  | 
 |   // Level of login required to access this resource. Defaults to | 
 |   // `optional`. | 
 |   LoginRequirement login = 2; | 
 |  | 
 |   // Path to the script from the application root directory. | 
 |   string script = 3; | 
 |  | 
 |   // Security (HTTPS) enforcement for this URL. | 
 |   SecurityLevel security_level = 4; | 
 |  | 
 |   // URL to serve the endpoint at. | 
 |   string url = 5; | 
 | } | 
 |  | 
 | // Custom static error page to be served when an error occurs. | 
 | message ErrorHandler { | 
 |   // Error codes. | 
 |   enum ErrorCode { | 
 |     option allow_alias = true; | 
 |     // Not specified. ERROR_CODE_DEFAULT is assumed. | 
 |     ERROR_CODE_UNSPECIFIED = 0; | 
 |  | 
 |     // All other error types. | 
 |     ERROR_CODE_DEFAULT = 0; | 
 |  | 
 |     // Application has exceeded a resource quota. | 
 |     ERROR_CODE_OVER_QUOTA = 1; | 
 |  | 
 |     // Client blocked by the application's Denial of Service protection | 
 |     // configuration. | 
 |     ERROR_CODE_DOS_API_DENIAL = 2; | 
 |  | 
 |     // Deadline reached before the application responds. | 
 |     ERROR_CODE_TIMEOUT = 3; | 
 |   } | 
 |  | 
 |   // Error condition this handler applies to. | 
 |   ErrorCode error_code = 1; | 
 |  | 
 |   // Static file content to be served for this error. | 
 |   string static_file = 2; | 
 |  | 
 |   // MIME type of file. Defaults to `text/html`. | 
 |   string mime_type = 3; | 
 | } | 
 |  | 
 | // URL pattern and description of how the URL should be handled. App Engine can | 
 | // handle URLs by executing application code or by serving static files | 
 | // uploaded with the version, such as images, CSS, or JavaScript. | 
 | message UrlMap { | 
 |   // Redirect codes. | 
 |   enum RedirectHttpResponseCode { | 
 |     // Not specified. `302` is assumed. | 
 |     REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED = 0; | 
 |  | 
 |     // `301 Moved Permanently` code. | 
 |     REDIRECT_HTTP_RESPONSE_CODE_301 = 1; | 
 |  | 
 |     // `302 Moved Temporarily` code. | 
 |     REDIRECT_HTTP_RESPONSE_CODE_302 = 2; | 
 |  | 
 |     // `303 See Other` code. | 
 |     REDIRECT_HTTP_RESPONSE_CODE_303 = 3; | 
 |  | 
 |     // `307 Temporary Redirect` code. | 
 |     REDIRECT_HTTP_RESPONSE_CODE_307 = 4; | 
 |   } | 
 |  | 
 |   // URL prefix. Uses regular expression syntax, which means regexp | 
 |   // special characters must be escaped, but should not contain groupings. | 
 |   // All URLs that begin with this prefix are handled by this handler, using the | 
 |   // portion of the URL after the prefix as part of the file path. | 
 |   string url_regex = 1; | 
 |  | 
 |   // Type of handler for this URL pattern. | 
 |   oneof handler_type { | 
 |     // Returns the contents of a file, such as an image, as the response. | 
 |     StaticFilesHandler static_files = 2; | 
 |  | 
 |     // Executes a script to handle the request that matches this URL | 
 |     // pattern. | 
 |     ScriptHandler script = 3; | 
 |  | 
 |     // Uses API Endpoints to handle requests. | 
 |     ApiEndpointHandler api_endpoint = 4; | 
 |   } | 
 |  | 
 |   // Security (HTTPS) enforcement for this URL. | 
 |   SecurityLevel security_level = 5; | 
 |  | 
 |   // Level of login required to access this resource. | 
 |   LoginRequirement login = 6; | 
 |  | 
 |   // Action to take when users access resources that require | 
 |   // authentication. Defaults to `redirect`. | 
 |   AuthFailAction auth_fail_action = 7; | 
 |  | 
 |   // `30x` code to use when performing redirects for the `secure` field. | 
 |   // Defaults to `302`. | 
 |   RedirectHttpResponseCode redirect_http_response_code = 8; | 
 | } | 
 |  | 
 | // Files served directly to the user for a given URL, such as images, CSS | 
 | // stylesheets, or JavaScript source files. Static file handlers describe which | 
 | // files in the application directory are static files, and which URLs serve | 
 | // them. | 
 | message StaticFilesHandler { | 
 |   // Path to the static files matched by the URL pattern, from the | 
 |   // application root directory. The path can refer to text matched in groupings | 
 |   // in the URL pattern. | 
 |   string path = 1; | 
 |  | 
 |   // Regular expression that matches the file paths for all files that should be | 
 |   // referenced by this handler. | 
 |   string upload_path_regex = 2; | 
 |  | 
 |   // HTTP headers to use for all responses from these URLs. | 
 |   map<string, string> http_headers = 3; | 
 |  | 
 |   // MIME type used to serve all files served by this handler. | 
 |   // | 
 |   // Defaults to file-specific MIME types, which are derived from each file's | 
 |   // filename extension. | 
 |   string mime_type = 4; | 
 |  | 
 |   // Time a static file served by this handler should be cached | 
 |   // by web proxies and browsers. | 
 |   google.protobuf.Duration expiration = 5; | 
 |  | 
 |   // Whether this handler should match the request if the file | 
 |   // referenced by the handler does not exist. | 
 |   bool require_matching_file = 6; | 
 |  | 
 |   // Whether files should also be uploaded as code data. By default, files | 
 |   // declared in static file handlers are uploaded as static | 
 |   // data and are only served to end users; they cannot be read by the | 
 |   // application. If enabled, uploads are charged against both your code and | 
 |   // static data storage resource quotas. | 
 |   bool application_readable = 7; | 
 | } | 
 |  | 
 | // Executes a script to handle the request that matches the URL pattern. | 
 | message ScriptHandler { | 
 |   // Path to the script from the application root directory. | 
 |   string script_path = 1; | 
 | } | 
 |  | 
 | // Uses Google Cloud Endpoints to handle requests. | 
 | message ApiEndpointHandler { | 
 |   // Path to the script from the application root directory. | 
 |   string script_path = 1; | 
 | } | 
 |  | 
 | // Health checking configuration for VM instances. Unhealthy instances | 
 | // are killed and replaced with new instances. Only applicable for | 
 | // instances in App Engine flexible environment. | 
 | message HealthCheck { | 
 |   // Whether to explicitly disable health checks for this instance. | 
 |   bool disable_health_check = 1; | 
 |  | 
 |   // Host header to send when performing an HTTP health check. | 
 |   // Example: "myapp.appspot.com" | 
 |   string host = 2; | 
 |  | 
 |   // Number of consecutive successful health checks required before receiving | 
 |   // traffic. | 
 |   uint32 healthy_threshold = 3; | 
 |  | 
 |   // Number of consecutive failed health checks required before removing | 
 |   // traffic. | 
 |   uint32 unhealthy_threshold = 4; | 
 |  | 
 |   // Number of consecutive failed health checks required before an instance is | 
 |   // restarted. | 
 |   uint32 restart_threshold = 5; | 
 |  | 
 |   // Interval between health checks. | 
 |   google.protobuf.Duration check_interval = 6; | 
 |  | 
 |   // Time before the health check is considered failed. | 
 |   google.protobuf.Duration timeout = 7; | 
 | } | 
 |  | 
 | // Third-party Python runtime library that is required by the application. | 
 | message Library { | 
 |   // Name of the library. Example: "django". | 
 |   string name = 1; | 
 |  | 
 |   // Version of the library to select, or "latest". | 
 |   string version = 2; | 
 | } | 
 |  | 
 | // Actions to take when the user is not logged in. | 
 | enum AuthFailAction { | 
 |   // Not specified. `AUTH_FAIL_ACTION_REDIRECT` is assumed. | 
 |   AUTH_FAIL_ACTION_UNSPECIFIED = 0; | 
 |  | 
 |   // Redirects user to "accounts.google.com". The user is redirected back to the | 
 |   // application URL after signing in or creating an account. | 
 |   AUTH_FAIL_ACTION_REDIRECT = 1; | 
 |  | 
 |   // Rejects request with a `401` HTTP status code and an error | 
 |   // message. | 
 |   AUTH_FAIL_ACTION_UNAUTHORIZED = 2; | 
 | } | 
 |  | 
 | // Methods to restrict access to a URL based on login status. | 
 | enum LoginRequirement { | 
 |   // Not specified. `LOGIN_OPTIONAL` is assumed. | 
 |   LOGIN_UNSPECIFIED = 0; | 
 |  | 
 |   // Does not require that the user is signed in. | 
 |   LOGIN_OPTIONAL = 1; | 
 |  | 
 |   // If the user is not signed in, the `auth_fail_action` is taken. | 
 |   // In addition, if the user is not an administrator for the | 
 |   // application, they are given an error message regardless of | 
 |   // `auth_fail_action`. If the user is an administrator, the handler | 
 |   // proceeds. | 
 |   LOGIN_ADMIN = 2; | 
 |  | 
 |   // If the user has signed in, the handler proceeds normally. Otherwise, the | 
 |   // auth_fail_action is taken. | 
 |   LOGIN_REQUIRED = 3; | 
 | } | 
 |  | 
 | // Methods to enforce security (HTTPS) on a URL. | 
 | enum SecurityLevel { | 
 |   option allow_alias = true; | 
 |   // Not specified. | 
 |   SECURE_UNSPECIFIED = 0; | 
 |  | 
 |   // Both HTTP and HTTPS requests with URLs that match the handler succeed | 
 |   // without redirects. The application can examine the request to determine | 
 |   // which protocol was used, and respond accordingly. | 
 |   SECURE_DEFAULT = 0; | 
 |  | 
 |   // Requests for a URL that match this handler that use HTTPS are automatically | 
 |   // redirected to the HTTP equivalent URL. | 
 |   SECURE_NEVER = 1; | 
 |  | 
 |   // Both HTTP and HTTPS requests with URLs that match the handler succeed | 
 |   // without redirects. The application can examine the request to determine | 
 |   // which protocol was used and respond accordingly. | 
 |   SECURE_OPTIONAL = 2; | 
 |  | 
 |   // Requests for a URL that match this handler that do not use HTTPS are | 
 |   // automatically redirected to the HTTPS URL with the same path. Query | 
 |   // parameters are reserved for the redirect. | 
 |   SECURE_ALWAYS = 3; | 
 | } |