diff options
Diffstat (limited to 'third_party/googleapis/google/appengine/v1/appengine.proto')
| -rw-r--r-- | third_party/googleapis/google/appengine/v1/appengine.proto | 1008 | 
1 files changed, 1008 insertions, 0 deletions
diff --git a/third_party/googleapis/google/appengine/v1/appengine.proto b/third_party/googleapis/google/appengine/v1/appengine.proto new file mode 100644 index 0000000..76eb230 --- /dev/null +++ b/third_party/googleapis/google/appengine/v1/appengine.proto @@ -0,0 +1,1008 @@ +// Copyright 2022 Google LLC +// +// 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/api/client.proto"; +import "google/appengine/v1/application.proto"; +import "google/appengine/v1/certificate.proto"; +import "google/appengine/v1/domain.proto"; +import "google/appengine/v1/domain_mapping.proto"; +import "google/appengine/v1/firewall.proto"; +import "google/appengine/v1/instance.proto"; +import "google/appengine/v1/service.proto"; +import "google/appengine/v1/version.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; + +option csharp_namespace = "Google.Cloud.AppEngine.V1"; +option go_package = "google.golang.org/genproto/googleapis/appengine/v1;appengine"; +option java_multiple_files = true; +option java_outer_classname = "AppengineProto"; +option java_package = "com.google.appengine.v1"; +option php_namespace = "Google\\Cloud\\AppEngine\\V1"; +option ruby_package = "Google::Cloud::AppEngine::V1"; + +// Manages App Engine applications. +service Applications { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Gets information about an application. +  rpc GetApplication(GetApplicationRequest) returns (Application) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*}" +    }; +    option (google.api.method_signature) = "name"; +  } + +  // Creates an App Engine application for a Google Cloud Platform project. +  // Required fields: +  // +  // * `id` - The ID of the target Cloud Platform project. +  // * *location* - The [region](https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located. +  // +  // For more information about App Engine applications, see [Managing Projects, Applications, and Billing](https://cloud.google.com/appengine/docs/standard/python/console/). +  rpc CreateApplication(CreateApplicationRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      post: "/v1/apps" +      body: "application" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Application" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Updates the specified Application resource. +  // You can update the following fields: +  // +  // * `auth_domain` - Google authentication domain for controlling user access to the application. +  // * `default_cookie_expiration` - Cookie expiration policy for the application. +  // * `iap` - Identity-Aware Proxy properties for the application. +  rpc UpdateApplication(UpdateApplicationRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*}" +      body: "application" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Application" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Recreates the required App Engine features for the specified App Engine +  // application, for example a Cloud Storage bucket or App Engine service +  // account. +  // Use this method if you receive an error message about a missing feature, +  // for example, *Error retrieving the App Engine service account*. +  // If you have deleted your App Engine service account, this will +  // not be able to recreate it. Instead, you should attempt to use the +  // IAM undelete API if possible at https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/undelete?apix_params=%7B"name"%3A"projects%2F-%2FserviceAccounts%2Funique_id"%2C"resource"%3A%7B%7D%7D . +  // If the deletion was recent, the numeric ID can be found in the Cloud +  // Console Activity Log. +  rpc RepairApplication(RepairApplicationRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      post: "/v1/{name=apps/*}:repair" +      body: "*" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Application" +      metadata_type: "OperationMetadataV1" +    }; +  } +} + +// Request message for `Applications.GetApplication`. +message GetApplicationRequest { +  // Name of the Application resource to get. Example: `apps/myapp`. +  string name = 1; +} + +// Request message for `Applications.CreateApplication`. +message CreateApplicationRequest { +  // Application configuration. +  Application application = 2; +} + +// Request message for `Applications.UpdateApplication`. +message UpdateApplicationRequest { +  // Name of the Application resource to update. Example: `apps/myapp`. +  string name = 1; + +  // An Application containing the updated resource. +  Application application = 2; + +  // Required. Standard field mask for the set of fields to be updated. +  google.protobuf.FieldMask update_mask = 3; +} + +// Request message for 'Applications.RepairApplication'. +message RepairApplicationRequest { +  // Name of the application to repair. Example: `apps/myapp` +  string name = 1; +} + +// Manages services of an application. +service Services { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists all the services in the application. +  rpc ListServices(ListServicesRequest) returns (ListServicesResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*}/services" +    }; +  } + +  // Gets the current configuration of the specified service. +  rpc GetService(GetServiceRequest) returns (Service) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/services/*}" +    }; +  } + +  // Updates the configuration of the specified service. +  rpc UpdateService(UpdateServiceRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*/services/*}" +      body: "service" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Service" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Deletes the specified service and all enclosed versions. +  rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/services/*}" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "google.protobuf.Empty" +      metadata_type: "OperationMetadataV1" +    }; +  } +} + +// Request message for `Services.ListServices`. +message ListServicesRequest { +  // Name of the parent Application resource. Example: `apps/myapp`. +  string parent = 1; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; +} + +// Response message for `Services.ListServices`. +message ListServicesResponse { +  // The services belonging to the requested application. +  repeated Service services = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Request message for `Services.GetService`. +message GetServiceRequest { +  // Name of the resource requested. Example: `apps/myapp/services/default`. +  string name = 1; +} + +// Request message for `Services.UpdateService`. +message UpdateServiceRequest { +  // Name of the resource to update. Example: `apps/myapp/services/default`. +  string name = 1; + +  // A Service resource containing the updated service. Only fields set in the +  // field mask will be updated. +  Service service = 2; + +  // Required. Standard field mask for the set of fields to be updated. +  google.protobuf.FieldMask update_mask = 3; + +  // Set to `true` to gradually shift traffic to one or more versions that you +  // specify. By default, traffic is shifted immediately. +  // For gradual traffic migration, the target versions +  // must be located within instances that are configured for both +  // [warmup requests](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#InboundServiceType) +  // and +  // [automatic scaling](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#AutomaticScaling). +  // You must specify the +  // [`shardBy`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#ShardBy) +  // field in the Service resource. Gradual traffic migration is not +  // supported in the App Engine flexible environment. For examples, see +  // [Migrating and Splitting Traffic](https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic). +  bool migrate_traffic = 4; +} + +// Request message for `Services.DeleteService`. +message DeleteServiceRequest { +  // Name of the resource requested. Example: `apps/myapp/services/default`. +  string name = 1; +} + +// Manages versions of a service. +service Versions { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists the versions of a service. +  rpc ListVersions(ListVersionsRequest) returns (ListVersionsResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*/services/*}/versions" +    }; +  } + +  // Gets the specified Version resource. +  // By default, only a `BASIC_VIEW` will be returned. +  // Specify the `FULL_VIEW` parameter to get the full resource. +  rpc GetVersion(GetVersionRequest) returns (Version) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/services/*/versions/*}" +    }; +  } + +  // Deploys code and resource files to a new version. +  rpc CreateVersion(CreateVersionRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      post: "/v1/{parent=apps/*/services/*}/versions" +      body: "version" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Version" +      metadata_type: "CreateVersionMetadataV1" +    }; +  } + +  // Updates the specified Version resource. +  // You can specify the following fields depending on the App Engine +  // environment and type of scaling that the version resource uses: +  // +  // **Standard environment** +  // +  // * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class) +  // +  // *automatic scaling* in the standard environment: +  // +  // * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // * [`automaticScaling.standard_scheduler_settings.max_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) +  // * [`automaticScaling.standard_scheduler_settings.min_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) +  // * [`automaticScaling.standard_scheduler_settings.target_cpu_utilization`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) +  // * [`automaticScaling.standard_scheduler_settings.target_throughput_utilization`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) +  // +  // *basic scaling* or *manual scaling* in the standard environment: +  // +  // * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status) +  // * [`manual_scaling.instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#manualscaling) +  // +  // **Flexible environment** +  // +  // * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status) +  // +  // *automatic scaling* in the flexible environment: +  // +  // * [`automatic_scaling.min_total_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // * [`automatic_scaling.max_total_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // * [`automatic_scaling.cool_down_period_sec`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // * [`automatic_scaling.cpu_utilization.target_utilization`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) +  // +  // *manual scaling* in the flexible environment: +  // +  // * [`manual_scaling.instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#manualscaling) +  rpc UpdateVersion(UpdateVersionRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*/services/*/versions/*}" +      body: "version" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Version" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Deletes an existing Version resource. +  rpc DeleteVersion(DeleteVersionRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/services/*/versions/*}" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "google.protobuf.Empty" +      metadata_type: "OperationMetadataV1" +    }; +  } +} + +// Request message for `Versions.ListVersions`. +message ListVersionsRequest { +  // Name of the parent Service resource. Example: +  // `apps/myapp/services/default`. +  string parent = 1; + +  // Controls the set of fields returned in the `List` response. +  VersionView view = 2; + +  // Maximum results to return per page. +  int32 page_size = 3; + +  // Continuation token for fetching the next page of results. +  string page_token = 4; +} + +// Response message for `Versions.ListVersions`. +message ListVersionsResponse { +  // The versions belonging to the requested service. +  repeated Version versions = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Fields that should be returned when [Version][google.appengine.v1.Version] resources +// are retrieved. +enum VersionView { +  // Basic version information including scaling and inbound services, +  // but not detailed deployment information. +  BASIC = 0; + +  // The information from `BASIC`, plus detailed information about the +  // deployment. This format is required when creating resources, but +  // is not returned in `Get` or `List` by default. +  FULL = 1; +} + +// Request message for `Versions.GetVersion`. +message GetVersionRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/services/default/versions/v1`. +  string name = 1; + +  // Controls the set of fields returned in the `Get` response. +  VersionView view = 2; +} + +// Request message for `Versions.CreateVersion`. +message CreateVersionRequest { +  // Name of the parent resource to create this version under. Example: +  // `apps/myapp/services/default`. +  string parent = 1; + +  // Application deployment configuration. +  Version version = 2; +} + +// Request message for `Versions.UpdateVersion`. +message UpdateVersionRequest { +  // Name of the resource to update. Example: +  // `apps/myapp/services/default/versions/1`. +  string name = 1; + +  // A Version containing the updated resource. Only fields set in the field +  // mask will be updated. +  Version version = 2; + +  // Standard field mask for the set of fields to be updated. +  google.protobuf.FieldMask update_mask = 3; +} + +// Request message for `Versions.DeleteVersion`. +message DeleteVersionRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/services/default/versions/v1`. +  string name = 1; +} + +// Manages instances of a version. +service Instances { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists the instances of a version. +  // +  // Tip: To aggregate details about instances over time, see the +  // [Stackdriver Monitoring API](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). +  rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*/services/*/versions/*}/instances" +    }; +  } + +  // Gets instance information. +  rpc GetInstance(GetInstanceRequest) returns (Instance) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/services/*/versions/*/instances/*}" +    }; +  } + +  // Stops a running instance. +  // +  // The instance might be automatically recreated based on the scaling settings +  // of the version. For more information, see "How Instances are Managed" +  // ([standard environment](https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed) | +  // [flexible environment](https://cloud.google.com/appengine/docs/flexible/python/how-instances-are-managed)). +  // +  // To ensure that instances are not re-created and avoid getting billed, you +  // can stop all instances within the target version by changing the serving +  // status of the version to `STOPPED` with the +  // [`apps.services.versions.patch`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions/patch) +  // method. +  rpc DeleteInstance(DeleteInstanceRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/services/*/versions/*/instances/*}" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "google.protobuf.Empty" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Enables debugging on a VM instance. This allows you to use the SSH +  // command to connect to the virtual machine where the instance lives. +  // While in "debug mode", the instance continues to serve live traffic. +  // You should delete the instance when you are done debugging and then +  // allow the system to take over and determine if another instance +  // should be started. +  // +  // Only applicable for instances in App Engine flexible environment. +  rpc DebugInstance(DebugInstanceRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      post: "/v1/{name=apps/*/services/*/versions/*/instances/*}:debug" +      body: "*" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "Instance" +      metadata_type: "OperationMetadataV1" +    }; +  } +} + +// Request message for `Instances.ListInstances`. +message ListInstancesRequest { +  // Name of the parent Version resource. Example: +  // `apps/myapp/services/default/versions/v1`. +  string parent = 1; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; +} + +// Response message for `Instances.ListInstances`. +message ListInstancesResponse { +  // The instances belonging to the requested version. +  repeated Instance instances = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Request message for `Instances.GetInstance`. +message GetInstanceRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/services/default/versions/v1/instances/instance-1`. +  string name = 1; +} + +// Request message for `Instances.DeleteInstance`. +message DeleteInstanceRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/services/default/versions/v1/instances/instance-1`. +  string name = 1; +} + +// Request message for `Instances.DebugInstance`. +message DebugInstanceRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/services/default/versions/v1/instances/instance-1`. +  string name = 1; + +  // Public SSH key to add to the instance. Examples: +  // +  // * `[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]` +  // * `[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}` +  // +  // For more information, see +  // [Adding and Removing SSH Keys](https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys). +  string ssh_key = 2; +} + +// Firewall resources are used to define a collection of access control rules +// for an Application. Each rule is defined with a position which specifies +// the rule's order in the sequence of rules, an IP range to be matched against +// requests, and an action to take upon matching requests. +// +// Every request is evaluated against the Firewall rules in priority order. +// Processesing stops at the first rule which matches the request's IP address. +// A final rule always specifies an action that applies to all remaining +// IP addresses. The default final rule for a newly-created application will be +// set to "allow" if not otherwise specified by the user. +service Firewall { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists the firewall rules of an application. +  rpc ListIngressRules(ListIngressRulesRequest) returns (ListIngressRulesResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*}/firewall/ingressRules" +    }; +  } + +  // Replaces the entire firewall ruleset in one bulk operation. This overrides +  // and replaces the rules of an existing firewall with the new rules. +  // +  // If the final rule does not match traffic with the '*' wildcard IP range, +  // then an "allow all" rule is explicitly added to the end of the list. +  rpc BatchUpdateIngressRules(BatchUpdateIngressRulesRequest) returns (BatchUpdateIngressRulesResponse) { +    option (google.api.http) = { +      post: "/v1/{name=apps/*/firewall/ingressRules}:batchUpdate" +      body: "*" +    }; +  } + +  // Creates a firewall rule for the application. +  rpc CreateIngressRule(CreateIngressRuleRequest) returns (google.appengine.v1.FirewallRule) { +    option (google.api.http) = { +      post: "/v1/{parent=apps/*}/firewall/ingressRules" +      body: "rule" +    }; +  } + +  // Gets the specified firewall rule. +  rpc GetIngressRule(GetIngressRuleRequest) returns (google.appengine.v1.FirewallRule) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/firewall/ingressRules/*}" +    }; +  } + +  // Updates the specified firewall rule. +  rpc UpdateIngressRule(UpdateIngressRuleRequest) returns (google.appengine.v1.FirewallRule) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*/firewall/ingressRules/*}" +      body: "rule" +    }; +  } + +  // Deletes the specified firewall rule. +  rpc DeleteIngressRule(DeleteIngressRuleRequest) returns (google.protobuf.Empty) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/firewall/ingressRules/*}" +    }; +  } +} + +// Request message for `Firewall.ListIngressRules`. +message ListIngressRulesRequest { +  // Name of the Firewall collection to retrieve. +  // Example: `apps/myapp/firewall/ingressRules`. +  string parent = 1; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; + +  // A valid IP Address. If set, only rules matching this address will be +  // returned. The first returned rule will be the rule that fires on requests +  // from this IP. +  string matching_address = 4; +} + +// Response message for `Firewall.ListIngressRules`. +message ListIngressRulesResponse { +  // The ingress FirewallRules for this application. +  repeated google.appengine.v1.FirewallRule ingress_rules = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Request message for `Firewall.BatchUpdateIngressRules`. +message BatchUpdateIngressRulesRequest { +  // Name of the Firewall collection to set. +  // Example: `apps/myapp/firewall/ingressRules`. +  string name = 1; + +  // A list of FirewallRules to replace the existing set. +  repeated google.appengine.v1.FirewallRule ingress_rules = 2; +} + +// Response message for `Firewall.UpdateAllIngressRules`. +message BatchUpdateIngressRulesResponse { +  // The full list of ingress FirewallRules for this application. +  repeated google.appengine.v1.FirewallRule ingress_rules = 1; +} + +// Request message for `Firewall.CreateIngressRule`. +message CreateIngressRuleRequest { +  // Name of the parent Firewall collection in which to create a new rule. +  // Example: `apps/myapp/firewall/ingressRules`. +  string parent = 1; + +  // A FirewallRule containing the new resource. +  // +  // The user may optionally provide a position at which the new rule will be +  // placed. The positions define a sequential list starting at 1. If a rule +  // already exists at the given position, rules greater than the provided +  // position will be moved forward by one. +  // +  // If no position is provided, the server will place the rule as the second to +  // last rule in the sequence before the required default allow-all or deny-all +  // rule. +  google.appengine.v1.FirewallRule rule = 2; +} + +// Request message for `Firewall.GetIngressRule`. +message GetIngressRuleRequest { +  // Name of the Firewall resource to retrieve. +  // Example: `apps/myapp/firewall/ingressRules/100`. +  string name = 1; +} + +// Request message for `Firewall.UpdateIngressRule`. +message UpdateIngressRuleRequest { +  // Name of the Firewall resource to update. +  // Example: `apps/myapp/firewall/ingressRules/100`. +  string name = 1; + +  // A FirewallRule containing the updated resource +  google.appengine.v1.FirewallRule rule = 2; + +  // Standard field mask for the set of fields to be updated. +  google.protobuf.FieldMask update_mask = 3; +} + +// Request message for `Firewall.DeleteIngressRule`. +message DeleteIngressRuleRequest { +  // Name of the Firewall resource to delete. +  // Example: `apps/myapp/firewall/ingressRules/100`. +  string name = 1; +} + +// Manages domains a user is authorized to administer. To authorize use of a +// domain, verify ownership via +// [Webmaster Central](https://www.google.com/webmasters/verification/home). +service AuthorizedDomains { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists all domains the user is authorized to administer. +  rpc ListAuthorizedDomains(ListAuthorizedDomainsRequest) returns (ListAuthorizedDomainsResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*}/authorizedDomains" +    }; +  } +} + +// Request message for `AuthorizedDomains.ListAuthorizedDomains`. +message ListAuthorizedDomainsRequest { +  // Name of the parent Application resource. Example: `apps/myapp`. +  string parent = 1; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; +} + +// Response message for `AuthorizedDomains.ListAuthorizedDomains`. +message ListAuthorizedDomainsResponse { +  // The authorized domains belonging to the user. +  repeated google.appengine.v1.AuthorizedDomain domains = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Manages SSL certificates a user is authorized to administer. A user can +// administer any SSL certificates applicable to their authorized domains. +service AuthorizedCertificates { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists all SSL certificates the user is authorized to administer. +  rpc ListAuthorizedCertificates(ListAuthorizedCertificatesRequest) returns (ListAuthorizedCertificatesResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*}/authorizedCertificates" +    }; +  } + +  // Gets the specified SSL certificate. +  rpc GetAuthorizedCertificate(GetAuthorizedCertificateRequest) returns (google.appengine.v1.AuthorizedCertificate) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/authorizedCertificates/*}" +    }; +  } + +  // Uploads the specified SSL certificate. +  rpc CreateAuthorizedCertificate(CreateAuthorizedCertificateRequest) returns (google.appengine.v1.AuthorizedCertificate) { +    option (google.api.http) = { +      post: "/v1/{parent=apps/*}/authorizedCertificates" +      body: "certificate" +    }; +  } + +  // Updates the specified SSL certificate. To renew a certificate and maintain +  // its existing domain mappings, update `certificate_data` with a new +  // certificate. The new certificate must be applicable to the same domains as +  // the original certificate. The certificate `display_name` may also be +  // updated. +  rpc UpdateAuthorizedCertificate(UpdateAuthorizedCertificateRequest) returns (google.appengine.v1.AuthorizedCertificate) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*/authorizedCertificates/*}" +      body: "certificate" +    }; +  } + +  // Deletes the specified SSL certificate. +  rpc DeleteAuthorizedCertificate(DeleteAuthorizedCertificateRequest) returns (google.protobuf.Empty) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/authorizedCertificates/*}" +    }; +  } +} + +// Request message for `AuthorizedCertificates.ListAuthorizedCertificates`. +message ListAuthorizedCertificatesRequest { +  // Name of the parent `Application` resource. Example: `apps/myapp`. +  string parent = 1; + +  // Controls the set of fields returned in the `LIST` response. +  AuthorizedCertificateView view = 4; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; +} + +// Response message for `AuthorizedCertificates.ListAuthorizedCertificates`. +message ListAuthorizedCertificatesResponse { +  // The SSL certificates the user is authorized to administer. +  repeated google.appengine.v1.AuthorizedCertificate certificates = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Request message for `AuthorizedCertificates.GetAuthorizedCertificate`. +message GetAuthorizedCertificateRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/authorizedCertificates/12345`. +  string name = 1; + +  // Controls the set of fields returned in the `GET` response. +  AuthorizedCertificateView view = 2; +} + +// Fields that should be returned when an AuthorizedCertificate resource is +// retrieved. +enum AuthorizedCertificateView { +  // Basic certificate information, including applicable domains and expiration +  // date. +  BASIC_CERTIFICATE = 0; + +  // The information from `BASIC_CERTIFICATE`, plus detailed information on the +  // domain mappings that have this certificate mapped. +  FULL_CERTIFICATE = 1; +} + +// Request message for `AuthorizedCertificates.CreateAuthorizedCertificate`. +message CreateAuthorizedCertificateRequest { +  // Name of the parent `Application` resource. Example: `apps/myapp`. +  string parent = 1; + +  // SSL certificate data. +  google.appengine.v1.AuthorizedCertificate certificate = 2; +} + +// Request message for `AuthorizedCertificates.UpdateAuthorizedCertificate`. +message UpdateAuthorizedCertificateRequest { +  // Name of the resource to update. Example: +  // `apps/myapp/authorizedCertificates/12345`. +  string name = 1; + +  // An `AuthorizedCertificate` containing the updated resource. Only fields set +  // in the field mask will be updated. +  google.appengine.v1.AuthorizedCertificate certificate = 2; + +  // Standard field mask for the set of fields to be updated. Updates are only +  // supported on the `certificate_raw_data` and `display_name` fields. +  google.protobuf.FieldMask update_mask = 3; +} + +// Request message for `AuthorizedCertificates.DeleteAuthorizedCertificate`. +message DeleteAuthorizedCertificateRequest { +  // Name of the resource to delete. Example: +  // `apps/myapp/authorizedCertificates/12345`. +  string name = 1; +} + +// Manages domains serving an application. +service DomainMappings { +  option (google.api.default_host) = "appengine.googleapis.com"; +  option (google.api.oauth_scopes) = +      "https://www.googleapis.com/auth/appengine.admin," +      "https://www.googleapis.com/auth/cloud-platform," +      "https://www.googleapis.com/auth/cloud-platform.read-only"; + +  // Lists the domain mappings on an application. +  rpc ListDomainMappings(ListDomainMappingsRequest) returns (ListDomainMappingsResponse) { +    option (google.api.http) = { +      get: "/v1/{parent=apps/*}/domainMappings" +    }; +  } + +  // Gets the specified domain mapping. +  rpc GetDomainMapping(GetDomainMappingRequest) returns (google.appengine.v1.DomainMapping) { +    option (google.api.http) = { +      get: "/v1/{name=apps/*/domainMappings/*}" +    }; +  } + +  // Maps a domain to an application. A user must be authorized to administer a +  // domain in order to map it to an application. For a list of available +  // authorized domains, see [`AuthorizedDomains.ListAuthorizedDomains`](). +  rpc CreateDomainMapping(CreateDomainMappingRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      post: "/v1/{parent=apps/*}/domainMappings" +      body: "domain_mapping" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "DomainMapping" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Updates the specified domain mapping. To map an SSL certificate to a +  // domain mapping, update `certificate_id` to point to an `AuthorizedCertificate` +  // resource. A user must be authorized to administer the associated domain +  // in order to update a `DomainMapping` resource. +  rpc UpdateDomainMapping(UpdateDomainMappingRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      patch: "/v1/{name=apps/*/domainMappings/*}" +      body: "domain_mapping" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "DomainMapping" +      metadata_type: "OperationMetadataV1" +    }; +  } + +  // Deletes the specified domain mapping. A user must be authorized to +  // administer the associated domain in order to delete a `DomainMapping` +  // resource. +  rpc DeleteDomainMapping(DeleteDomainMappingRequest) returns (google.longrunning.Operation) { +    option (google.api.http) = { +      delete: "/v1/{name=apps/*/domainMappings/*}" +    }; +    option (google.longrunning.operation_info) = { +      response_type: "google.protobuf.Empty" +      metadata_type: "OperationMetadataV1" +    }; +  } +} + +// Request message for `DomainMappings.ListDomainMappings`. +message ListDomainMappingsRequest { +  // Name of the parent Application resource. Example: `apps/myapp`. +  string parent = 1; + +  // Maximum results to return per page. +  int32 page_size = 2; + +  // Continuation token for fetching the next page of results. +  string page_token = 3; +} + +// Response message for `DomainMappings.ListDomainMappings`. +message ListDomainMappingsResponse { +  // The domain mappings for the application. +  repeated google.appengine.v1.DomainMapping domain_mappings = 1; + +  // Continuation token for fetching the next page of results. +  string next_page_token = 2; +} + +// Request message for `DomainMappings.GetDomainMapping`. +message GetDomainMappingRequest { +  // Name of the resource requested. Example: +  // `apps/myapp/domainMappings/example.com`. +  string name = 1; +} + +// Override strategy for mutating an existing mapping. +enum DomainOverrideStrategy { +  // Strategy unspecified. Defaults to `STRICT`. +  UNSPECIFIED_DOMAIN_OVERRIDE_STRATEGY = 0; + +  // Overrides not allowed. If a mapping already exists for the +  // specified domain, the request will return an ALREADY_EXISTS (409). +  STRICT = 1; + +  // Overrides allowed. If a mapping already exists for the specified domain, +  // the request will overwrite it. Note that this might stop another +  // Google product from serving. For example, if the domain is +  // mapped to another App Engine application, that app will no +  // longer serve from that domain. +  OVERRIDE = 2; +} + +// Request message for `DomainMappings.CreateDomainMapping`. +message CreateDomainMappingRequest { +  // Name of the parent Application resource. Example: `apps/myapp`. +  string parent = 1; + +  // Domain mapping configuration. +  google.appengine.v1.DomainMapping domain_mapping = 2; + +  // Whether the domain creation should override any existing mappings for this +  // domain. By default, overrides are rejected. +  DomainOverrideStrategy override_strategy = 4; +} + +// Request message for `DomainMappings.UpdateDomainMapping`. +message UpdateDomainMappingRequest { +  // Name of the resource to update. Example: +  // `apps/myapp/domainMappings/example.com`. +  string name = 1; + +  // A domain mapping containing the updated resource. Only fields set +  // in the field mask will be updated. +  google.appengine.v1.DomainMapping domain_mapping = 2; + +  // Required. Standard field mask for the set of fields to be updated. +  google.protobuf.FieldMask update_mask = 3; +} + +// Request message for `DomainMappings.DeleteDomainMapping`. +message DeleteDomainMappingRequest { +  // Name of the resource to delete. Example: +  // `apps/myapp/domainMappings/example.com`. +  string name = 1; +}  | 
