xref: /aosp_15_r20/external/googleapis/google/appengine/v1/application.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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