From 48fa7512d385dd8ea8e51aab083086858b4dbffe Mon Sep 17 00:00:00 2001 From: Google APIs Date: Wed, 16 Dec 2020 15:18:35 -0800 Subject: [PATCH] feat: public protos for API Gateway API PiperOrigin-RevId: 347907714 --- google/cloud/apigateway/v1/BUILD.bazel | 176 +++++ google/cloud/apigateway/v1/apigateway.proto | 615 ++++++++++++++++++ .../v1/apigateway_grpc_service_config.json | 54 ++ .../apigateway/v1/apigateway_service.proto | 194 ++++++ google/cloud/apigateway/v1/apigateway_v1.yaml | 61 ++ 5 files changed, 1100 insertions(+) create mode 100644 google/cloud/apigateway/v1/BUILD.bazel create mode 100644 google/cloud/apigateway/v1/apigateway.proto create mode 100644 google/cloud/apigateway/v1/apigateway_grpc_service_config.json create mode 100644 google/cloud/apigateway/v1/apigateway_service.proto create mode 100644 google/cloud/apigateway/v1/apigateway_v1.yaml diff --git a/google/cloud/apigateway/v1/BUILD.bazel b/google/cloud/apigateway/v1/BUILD.bazel new file mode 100644 index 0000000000000..dfc78e49d8926 --- /dev/null +++ b/google/cloud/apigateway/v1/BUILD.bazel @@ -0,0 +1,176 @@ +# This file was automatically generated by BuildFileGenerator + +# This is an API workspace, having public visibility by default makes perfect sense. +package(default_visibility = ["//visibility:public"]) + +############################################################################## +# Common +############################################################################## +load("@rules_proto//proto:defs.bzl", "proto_library") + +proto_library( + name = "apigateway_proto", + srcs = [ + "apigateway.proto", + "apigateway_service.proto", + ], + deps = [ + "//google/api:annotations_proto", + "//google/api:client_proto", + "//google/api:field_behavior_proto", + "//google/api:resource_proto", + "//google/longrunning:operations_proto", + "@com_google_protobuf//:field_mask_proto", + "@com_google_protobuf//:timestamp_proto", + ], +) + +############################################################################## +# Java +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "java_grpc_library", + "java_proto_library", +) + +java_proto_library( + name = "apigateway_java_proto", + deps = [":apigateway_proto"], +) + +java_grpc_library( + name = "apigateway_java_grpc", + srcs = [":apigateway_proto"], + deps = [":apigateway_java_proto"], +) + +############################################################################## +# Go +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "go_proto_library", +) + +go_proto_library( + name = "apigateway_go_proto", + compilers = ["@io_bazel_rules_go//proto:go_grpc"], + importpath = "google.golang.org/genproto/googleapis/cloud/apigateway/v1", + protos = [":apigateway_proto"], + deps = [ + "//google/api:annotations_go_proto", + "//google/longrunning:longrunning_go_proto", + ], +) + +############################################################################## +# Python +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "moved_proto_library", + "py_grpc_library", + "py_proto_library", +) + +moved_proto_library( + name = "apigateway_moved_proto", + srcs = [":apigateway_proto"], + deps = [ + "//google/api:annotations_proto", + "//google/api:client_proto", + "//google/api:field_behavior_proto", + "//google/api:resource_proto", + "//google/longrunning:operations_proto", + "@com_google_protobuf//:field_mask_proto", + "@com_google_protobuf//:timestamp_proto", + ], +) + +py_proto_library( + name = "apigateway_py_proto", + plugin = "@protoc_docs_plugin//:docs_plugin", + deps = [":apigateway_moved_proto"], +) + +py_grpc_library( + name = "apigateway_py_grpc", + srcs = [":apigateway_moved_proto"], + deps = [":apigateway_py_proto"], +) + +############################################################################## +# PHP +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "php_grpc_library", + "php_proto_library", +) + +php_proto_library( + name = "apigateway_php_proto", + deps = [":apigateway_proto"], +) + +php_grpc_library( + name = "apigateway_php_grpc", + srcs = [":apigateway_proto"], + deps = [":apigateway_php_proto"], +) + +############################################################################## +# Node.js +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "nodejs_gapic_assembly_pkg", + "nodejs_gapic_library", +) + + +############################################################################## +# Ruby +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "ruby_grpc_library", + "ruby_proto_library", +) + +ruby_proto_library( + name = "apigateway_ruby_proto", + deps = [":apigateway_proto"], +) + +ruby_grpc_library( + name = "apigateway_ruby_grpc", + srcs = [":apigateway_proto"], + deps = [":apigateway_ruby_proto"], +) + +############################################################################## +# C# +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "csharp_grpc_library", + "csharp_proto_library", +) + +csharp_proto_library( + name = "apigateway_csharp_proto", + deps = [":apigateway_proto"], +) + +csharp_grpc_library( + name = "apigateway_csharp_grpc", + srcs = [":apigateway_proto"], + deps = [":apigateway_csharp_proto"], +) + +############################################################################## +# C++ +############################################################################## +# Put your C++ code here diff --git a/google/cloud/apigateway/v1/apigateway.proto b/google/cloud/apigateway/v1/apigateway.proto new file mode 100644 index 0000000000000..7b4416fc5deaf --- /dev/null +++ b/google/cloud/apigateway/v1/apigateway.proto @@ -0,0 +1,615 @@ +// Copyright 2020 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.cloud.apigateway.v1; + +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/cloud/apigateway/v1;apigateway"; +option java_multiple_files = true; +option java_package = "com.google.cloud.apigateway.v1"; + +// An API that can be served by one or more Gateways. +message Api { + option (google.api.resource) = { + type: "apigateway.googleapis.com/Api" + pattern: "projects/{project}/locations/global/apis/{api}" + }; + + // All the possible API states. + enum State { + // API does not have a state yet. + STATE_UNSPECIFIED = 0; + + // API is being created. + CREATING = 1; + + // API is active. + ACTIVE = 2; + + // API creation failed. + FAILED = 3; + + // API is being deleted. + DELETING = 4; + + // API is being updated. + UPDATING = 5; + } + + // Output only. Resource name of the API. + // Format: projects/{project}/locations/global/apis/{api} + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Created time. + google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Updated time. + google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Resource labels to represent user-provided metadata. + // Refer to cloud documentation on labels for more details. + // https://cloud.google.com/compute/docs/labeling-resources + map labels = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Display name. + string display_name = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Immutable. The name of a Google Managed Service ( + // https://cloud.google.com/service-infrastructure/docs/glossary#managed). If + // not specified, a new Service will automatically be created in the same + // project as this API. + string managed_service = 7 [ + (google.api.field_behavior) = IMMUTABLE, + (google.api.field_behavior) = OPTIONAL + ]; + + // Output only. State of the API. + State state = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// An API Configuration is a combination of settings for both the Managed +// Service and Gateways serving this API Config. +message ApiConfig { + option (google.api.resource) = { + type: "apigateway.googleapis.com/ApiConfig" + pattern: "projects/{project}/locations/global/apis/{api}/configs/{api_config}" + }; + + // A lightweight description of a file. + message File { + // The file path (full or relative path). This is typically the path of the + // file when it is uploaded. + string path = 1; + + // The bytes that constitute the file. + bytes contents = 2; + } + + // An OpenAPI Specification Document describing an API. + message OpenApiDocument { + // The OpenAPI Specification document file. + File document = 1; + } + + // A gRPC service definition. + message GrpcServiceDefinition { + // Input only. File descriptor set, generated by protoc. + // + // To generate, use protoc with imports and source info included. + // For an example test.proto file, the following command would put the value + // in a new file named out.pb. + // + // $ protoc --include_imports --include_source_info test.proto -o out.pb + File file_descriptor_set = 1 [(google.api.field_behavior) = INPUT_ONLY]; + + // Optional. Uncompiled proto files associated with the descriptor set, used for + // display purposes (server-side compilation is not supported). These + // should match the inputs to 'protoc' command used to generate + // file_descriptor_set. + repeated File source = 2 [(google.api.field_behavior) = OPTIONAL]; + } + + // All the possible API Config states. + enum State { + // API Config does not have a state yet. + STATE_UNSPECIFIED = 0; + + // API Config is being created and deployed to the API Controller. + CREATING = 1; + + // API Config is ready for use by Gateways. + ACTIVE = 2; + + // API Config creation failed. + FAILED = 3; + + // API Config is being deleted. + DELETING = 4; + + // API Config is being updated. + UPDATING = 5; + + // API Config settings are being activated in downstream systems. + // API Configs in this state cannot be used by Gateways. + ACTIVATING = 6; + } + + // Output only. Resource name of the API Config. + // Format: projects/{project}/locations/global/apis/{api}/configs/{api_config} + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Created time. + google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Updated time. + google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Resource labels to represent user-provided metadata. + // Refer to cloud documentation on labels for more details. + // https://cloud.google.com/compute/docs/labeling-resources + map labels = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Display name. + string display_name = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Immutable. The Google Cloud IAM Service Account that Gateways serving this config + // should use to authenticate to other services. This may either be the + // Service Account's email + // (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource + // name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used + // when the service is a GCP resource such as a Cloud Run Service or an + // IAP-secured service. + string gateway_service_account = 14 [ + (google.api.field_behavior) = IMMUTABLE, + (google.api.resource_reference) = { + type: "iam.googleapis.com/ServiceAccount" + } + ]; + + // Output only. The ID of the associated Service Config ( + // https://cloud.google.com/service-infrastructure/docs/glossary#config). + string service_config_id = 12 [ + (google.api.field_behavior) = OUTPUT_ONLY, + (google.api.resource_reference) = { + type: "servicemanagement.googleapis.com/Service" + } + ]; + + // Output only. State of the API Config. + State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. OpenAPI specification documents. If specified, grpc_services and + // managed_service_configs must not be included. + repeated OpenApiDocument openapi_documents = 9 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. gRPC service definition files. If specified, openapi_documents must + // not be included. + repeated GrpcServiceDefinition grpc_services = 10 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Service Configuration files. At least one must be included when using gRPC + // service definitions. See + // https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview + // for the expected file contents. + // + // If multiple files are specified, the files are merged with the following + // rules: + // * All singular scalar fields are merged using "last one wins" semantics in + // the order of the files uploaded. + // * Repeated fields are concatenated. + // * Singular embedded messages are merged using these rules for nested + // fields. + repeated File managed_service_configs = 11 [(google.api.field_behavior) = OPTIONAL]; +} + +// A Gateway is an API-aware HTTP proxy. It performs API-Method and/or +// API-Consumer specific actions based on an API Config such as authentication, +// policy enforcement, and backend selection. +message Gateway { + option (google.api.resource) = { + type: "apigateway.googleapis.com/Gateway" + pattern: "projects/{project}/locations/{location}/gateways/{gateway}" + }; + + // All the possible Gateway states. + enum State { + // Gateway does not have a state yet. + STATE_UNSPECIFIED = 0; + + // Gateway is being created. + CREATING = 1; + + // Gateway is running and ready for requests. + ACTIVE = 2; + + // Gateway creation failed. + FAILED = 3; + + // Gateway is being deleted. + DELETING = 4; + + // Gateway is being updated. + UPDATING = 5; + } + + // Output only. Resource name of the Gateway. + // Format: projects/{project}/locations/{location}/gateways/{gateway} + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Created time. + google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Updated time. + google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Resource labels to represent user-provided metadata. + // Refer to cloud documentation on labels for more details. + // https://cloud.google.com/compute/docs/labeling-resources + map labels = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Display name. + string display_name = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Required. Resource name of the API Config for this Gateway. + // Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig} + string api_config = 6 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/ApiConfig" + } + ]; + + // Output only. The current state of the Gateway. + State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The default API Gateway host name of the form + // `{gateway_id}-{hash}.{region_code}.gateway.dev`. + string default_hostname = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Request message for ApiGatewayService.ListGateways +message ListGatewaysRequest { + // Required. Parent resource of the Gateway, of the form: + // `projects/*/locations/*` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Page size. + int32 page_size = 2; + + // Page token. + string page_token = 3; + + // Filter. + string filter = 4; + + // Order by parameters. + string order_by = 5; +} + +// Response message for ApiGatewayService.ListGateways +message ListGatewaysResponse { + // Gateways. + repeated Gateway gateways = 1; + + // Next page token. + string next_page_token = 2; + + // Locations that could not be reached. + repeated string unreachable_locations = 3; +} + +// Request message for ApiGatewayService.GetGateway +message GetGatewayRequest { + // Required. Resource name of the form: + // `projects/*/locations/*/gateways/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Gateway" + } + ]; +} + +// Request message for ApiGatewayService.CreateGateway +message CreateGatewayRequest { + // Required. Parent resource of the Gateway, of the form: + // `projects/*/locations/*` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Required. Identifier to assign to the Gateway. Must be unique within scope of + // the parent resource. + string gateway_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. Gateway resource. + Gateway gateway = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.UpdateGateway +message UpdateGatewayRequest { + // Field mask is used to specify the fields to be overwritten in the + // Gateway resource by the update. + // The fields specified in the update_mask are relative to the resource, not + // the full request. A field will be overwritten if it is in the mask. If the + // user does not provide a mask then all fields will be overwritten. + google.protobuf.FieldMask update_mask = 1; + + // Required. Gateway resource. + Gateway gateway = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.DeleteGateway +message DeleteGatewayRequest { + // Required. Resource name of the form: + // `projects/*/locations/*/gateways/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Gateway" + } + ]; +} + +// Request message for ApiGatewayService.ListApis +message ListApisRequest { + // Required. Parent resource of the API, of the form: + // `projects/*/locations/global` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Page size. + int32 page_size = 2; + + // Page token. + string page_token = 3; + + // Filter. + string filter = 4; + + // Order by parameters. + string order_by = 5; +} + +// Response message for ApiGatewayService.ListApis +message ListApisResponse { + // APIs. + repeated Api apis = 1; + + // Next page token. + string next_page_token = 2; + + // Locations that could not be reached. + repeated string unreachable_locations = 3; +} + +// Request message for ApiGatewayService.GetApi +message GetApiRequest { + // Required. Resource name of the form: + // `projects/*/locations/global/apis/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Api" + } + ]; +} + +// Request message for ApiGatewayService.CreateApi +message CreateApiRequest { + // Required. Parent resource of the API, of the form: + // `projects/*/locations/global` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Required. Identifier to assign to the API. Must be unique within scope of + // the parent resource. + string api_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. API resource. + Api api = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.UpdateApi +message UpdateApiRequest { + // Field mask is used to specify the fields to be overwritten in the + // Api resource by the update. + // The fields specified in the update_mask are relative to the resource, not + // the full request. A field will be overwritten if it is in the mask. If the + // user does not provide a mask then all fields will be overwritten. + google.protobuf.FieldMask update_mask = 1; + + // Required. API resource. + Api api = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.DeleteApi +message DeleteApiRequest { + // Required. Resource name of the form: + // `projects/*/locations/global/apis/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Api" + } + ]; +} + +// Request message for ApiGatewayService.ListApiConfigs +message ListApiConfigsRequest { + // Required. Parent resource of the API Config, of the form: + // `projects/*/locations/global/apis/*` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Api" + } + ]; + + // Page size. + int32 page_size = 2; + + // Page token. + string page_token = 3; + + // Filter. + string filter = 4; + + // Order by parameters. + string order_by = 5; +} + +// Response message for ApiGatewayService.ListApiConfigs +message ListApiConfigsResponse { + // API Configs. + repeated ApiConfig api_configs = 1; + + // Next page token. + string next_page_token = 2; + + // Locations that could not be reached. + repeated string unreachable_locations = 3; +} + +// Request message for ApiGatewayService.GetApiConfig +message GetApiConfigRequest { + // Enum to control which fields should be included in the response. + enum ConfigView { + CONFIG_VIEW_UNSPECIFIED = 0; + + // Do not include configuration source files. + BASIC = 1; + + // Include configuration source files. + FULL = 2; + } + + // Required. Resource name of the form: + // `projects/*/locations/global/apis/*/configs/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/ApiConfig" + } + ]; + + // Specifies which fields of the API Config are returned in the response. + // Defaults to `BASIC` view. + ConfigView view = 3; +} + +// Request message for ApiGatewayService.CreateApiConfig +message CreateApiConfigRequest { + // Required. Parent resource of the API Config, of the form: + // `projects/*/locations/global/apis/*` + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/Api" + } + ]; + + // Required. Identifier to assign to the API Config. Must be unique within scope of + // the parent resource. + string api_config_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. API resource. + ApiConfig api_config = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.UpdateApiConfig +message UpdateApiConfigRequest { + // Field mask is used to specify the fields to be overwritten in the + // ApiConfig resource by the update. + // The fields specified in the update_mask are relative to the resource, not + // the full request. A field will be overwritten if it is in the mask. If the + // user does not provide a mask then all fields will be overwritten. + google.protobuf.FieldMask update_mask = 1; + + // Required. API Config resource. + ApiConfig api_config = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for ApiGatewayService.DeleteApiConfig +message DeleteApiConfigRequest { + // Required. Resource name of the form: + // `projects/*/locations/global/apis/*/configs/*` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apigateway.googleapis.com/ApiConfig" + } + ]; +} + +// Represents the metadata of the long-running operation. +message OperationMetadata { + // Diagnostic information from configuration processing. + message Diagnostic { + // Location of the diagnostic. + string location = 1; + + // The diagnostic message. + string message = 2; + } + + // Output only. The time the operation was created. + google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The time the operation finished running. + google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Server-defined resource path for the target of the operation. + string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Name of the verb executed by the operation. + string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Human-readable status of the operation, if any. + string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Identifies whether the user has requested cancellation + // of the operation. Operations that have successfully been cancelled + // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, + // corresponding to `Code.CANCELLED`. + bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. API version used to start the operation. + string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Diagnostics generated during processing of configuration source files. + repeated Diagnostic diagnostics = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; +} diff --git a/google/cloud/apigateway/v1/apigateway_grpc_service_config.json b/google/cloud/apigateway/v1/apigateway_grpc_service_config.json new file mode 100644 index 0000000000000..df54be40efbe2 --- /dev/null +++ b/google/cloud/apigateway/v1/apigateway_grpc_service_config.json @@ -0,0 +1,54 @@ +{ + "methodConfig": [ + { + "name": [ + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "CreateApi" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "CreateApiConfig" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "CreateGateway" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "UpdateApi" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "UpdateApiConfig" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "UpdateGateway" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "DeleteApi" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "DeleteApiConfig" + }, + { + "service": "google.cloud.apigateway.v1.ApiGatewayService", + "method": "DeleteGateway" + } + ], + "timeout": "60s", + "retryPolicy": { + "initialBackoff": "1s", + "maxBackoff": "60s", + "backoffMultiplier": 2, + "retryableStatusCodes": [ + "UNKNOWN", + "UNAVAILABLE" + ] + } + } + ] +} diff --git a/google/cloud/apigateway/v1/apigateway_service.proto b/google/cloud/apigateway/v1/apigateway_service.proto new file mode 100644 index 0000000000000..dc27b0aa27dff --- /dev/null +++ b/google/cloud/apigateway/v1/apigateway_service.proto @@ -0,0 +1,194 @@ +// Copyright 2020 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.cloud.apigateway.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/cloud/apigateway/v1/apigateway.proto"; +import "google/longrunning/operations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/cloud/apigateway/v1;apigateway"; +option java_multiple_files = true; +option java_package = "com.google.cloud.apigateway.v1"; + +// The API Gateway Service is the interface for managing API Gateways. +service ApiGatewayService { + option (google.api.default_host) = "apigateway.googleapis.com"; + option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + + // Lists Gateways in a given project and location. + rpc ListGateways(ListGatewaysRequest) returns (ListGatewaysResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*}/gateways" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets details of a single Gateway. + rpc GetGateway(GetGatewayRequest) returns (Gateway) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/gateways/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new Gateway in a given project and location. + rpc CreateGateway(CreateGatewayRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/gateways" + body: "gateway" + }; + option (google.api.method_signature) = "parent,gateway,gateway_id"; + option (google.longrunning.operation_info) = { + response_type: "Gateway" + metadata_type: "OperationMetadata" + }; + } + + // Updates the parameters of a single Gateway. + rpc UpdateGateway(UpdateGatewayRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + patch: "/v1/{gateway.name=projects/*/locations/*/gateways/*}" + body: "gateway" + }; + option (google.api.method_signature) = "gateway,update_mask"; + option (google.longrunning.operation_info) = { + response_type: "Gateway" + metadata_type: "OperationMetadata" + }; + } + + // Deletes a single Gateway. + rpc DeleteGateway(DeleteGatewayRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/gateways/*}" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "OperationMetadata" + }; + } + + // Lists Apis in a given project and location. + rpc ListApis(ListApisRequest) returns (ListApisResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*}/apis" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets details of a single Api. + rpc GetApi(GetApiRequest) returns (Api) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/apis/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new Api in a given project and location. + rpc CreateApi(CreateApiRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/apis" + body: "api" + }; + option (google.api.method_signature) = "parent,api,api_id"; + option (google.longrunning.operation_info) = { + response_type: "Api" + metadata_type: "OperationMetadata" + }; + } + + // Updates the parameters of a single Api. + rpc UpdateApi(UpdateApiRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + patch: "/v1/{api.name=projects/*/locations/*/apis/*}" + body: "api" + }; + option (google.api.method_signature) = "api,update_mask"; + option (google.longrunning.operation_info) = { + response_type: "Api" + metadata_type: "OperationMetadata" + }; + } + + // Deletes a single Api. + rpc DeleteApi(DeleteApiRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/apis/*}" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "OperationMetadata" + }; + } + + // Lists ApiConfigs in a given project and location. + rpc ListApiConfigs(ListApiConfigsRequest) returns (ListApiConfigsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*/apis/*}/configs" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets details of a single ApiConfig. + rpc GetApiConfig(GetApiConfigRequest) returns (ApiConfig) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/apis/*/configs/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new ApiConfig in a given project and location. + rpc CreateApiConfig(CreateApiConfigRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*/apis/*}/configs" + body: "api_config" + }; + option (google.api.method_signature) = "parent,api_config,api_config_id"; + option (google.longrunning.operation_info) = { + response_type: "ApiConfig" + metadata_type: "OperationMetadata" + }; + } + + // Updates the parameters of a single ApiConfig. + rpc UpdateApiConfig(UpdateApiConfigRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + patch: "/v1/{api_config.name=projects/*/locations/*/apis/*/configs/*}" + body: "api_config" + }; + option (google.api.method_signature) = "api_config,update_mask"; + option (google.longrunning.operation_info) = { + response_type: "ApiConfig" + metadata_type: "OperationMetadata" + }; + } + + // Deletes a single ApiConfig. + rpc DeleteApiConfig(DeleteApiConfigRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/apis/*/configs/*}" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "OperationMetadata" + }; + } +} diff --git a/google/cloud/apigateway/v1/apigateway_v1.yaml b/google/cloud/apigateway/v1/apigateway_v1.yaml new file mode 100644 index 0000000000000..9dfb709844238 --- /dev/null +++ b/google/cloud/apigateway/v1/apigateway_v1.yaml @@ -0,0 +1,61 @@ +type: google.api.Service +config_version: 3 +name: apigateway.googleapis.com +title: API Gateway API + +apis: +- name: google.cloud.apigateway.v1.ApiGatewayService + +types: +- name: google.cloud.apigateway.v1.OperationMetadata + +documentation: + rules: + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + description: |- + Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + description: |- + Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + description: |- + Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + +backend: + rules: + - selector: 'google.cloud.apigateway.v1.ApiGatewayService.*' + deadline: 60.0 + - selector: 'google.iam.v1.IAMPolicy.*' + deadline: 60.0 + - selector: 'google.longrunning.Operations.*' + deadline: 60.0 + - selector: google.longrunning.Operations.GetOperation + deadline: 5.0 + +authentication: + rules: + - selector: 'google.cloud.apigateway.v1.ApiGatewayService.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: 'google.iam.v1.IAMPolicy.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: 'google.longrunning.Operations.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform