From cd090841ab172574e740c214c99df00aef9c0dee Mon Sep 17 00:00:00 2001 From: Google APIs Date: Mon, 6 Apr 2026 16:33:57 -0700 Subject: [PATCH] feat: add v1beta public clients for AppOptimize API PiperOrigin-RevId: 895558469 --- google/cloud/appoptimize/BUILD.bazel | 11 +- google/cloud/appoptimize/v1beta/BUILD.bazel | 394 +++++++++++++++++ .../appoptimize/v1beta/app_optimize.proto | 407 ++++++++++++++++++ .../v1beta/appoptimize_v1beta.yaml | 120 ++++++ ...ppoptimize_v1beta_grpc_service_config.json | 24 ++ 5 files changed, 950 insertions(+), 6 deletions(-) create mode 100644 google/cloud/appoptimize/v1beta/BUILD.bazel create mode 100644 google/cloud/appoptimize/v1beta/app_optimize.proto create mode 100644 google/cloud/appoptimize/v1beta/appoptimize_v1beta.yaml create mode 100644 google/cloud/appoptimize/v1beta/appoptimize_v1beta_grpc_service_config.json diff --git a/google/cloud/appoptimize/BUILD.bazel b/google/cloud/appoptimize/BUILD.bazel index e01e74473b..2572dd3374 100644 --- a/google/cloud/appoptimize/BUILD.bazel +++ b/google/cloud/appoptimize/BUILD.bazel @@ -1,16 +1,15 @@ -exports_files(glob(["*.yaml"])) - load( "@com_google_googleapis_imports//:imports.bzl", - "nodejs_gapic_combined_pkg" + "nodejs_gapic_combined_pkg", ) +exports_files(glob(["*.yaml"])) nodejs_gapic_combined_pkg( name = "google-cloud-appoptimize-nodejs", - default_version = "v1alpha", + default_version = "v1beta", templates_excludes = ["package.json"], deps = [ - "//google/cloud/appoptimize/v1alpha:appoptimize-v1alpha-nodejs", + "//google/cloud/appoptimize/v1beta:appoptimize-v1beta-nodejs", ], -) \ No newline at end of file +) diff --git a/google/cloud/appoptimize/v1beta/BUILD.bazel b/google/cloud/appoptimize/v1beta/BUILD.bazel new file mode 100644 index 0000000000..3eada553e1 --- /dev/null +++ b/google/cloud/appoptimize/v1beta/BUILD.bazel @@ -0,0 +1,394 @@ +# This file was automatically generated by BuildFileGenerator +# https://github.com/googleapis/rules_gapic/tree/master/bazel + +# Most of the manual changes to this file will be overwritten. +# It's **only** allowed to change the following rule attribute values: +# - names of *_gapic_assembly_* rules +# - certain parameters of *_gapic_library rules, including but not limited to: +# * extra_protoc_parameters +# * extra_protoc_file_parameters +# The complete list of preserved parameters can be found in the source code. + +# buildifier: disable=load-on-top + +# This is an API workspace, having public visibility by default makes perfect sense. +package(default_visibility = ["//visibility:public"]) + +############################################################################## +# Common +############################################################################## +# buildifier: disable=same-origin-load +load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info") +load("@rules_proto//proto:defs.bzl", "proto_library") + +proto_library( + name = "appoptimize_proto", + srcs = [ + "app_optimize.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//:empty_proto", + "@com_google_protobuf//:struct_proto", + "@com_google_protobuf//:timestamp_proto", + ], +) + +proto_library_with_info( + name = "appoptimize_proto_with_info", + deps = [ + ":appoptimize_proto", + "//google/cloud:common_resources_proto", + "//google/cloud/location:location_proto", + ], +) + +############################################################################## +# Java +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "java_gapic_assembly_gradle_pkg", + "java_gapic_library", + "java_gapic_test", + "java_grpc_library", + "java_proto_library", +) + +java_proto_library( + name = "appoptimize_java_proto", + deps = [":appoptimize_proto"], +) + +java_grpc_library( + name = "appoptimize_java_grpc", + srcs = [":appoptimize_proto"], + deps = [":appoptimize_java_proto"], +) + +java_gapic_library( + name = "appoptimize_java_gapic", + srcs = [":appoptimize_proto_with_info"], + gapic_yaml = None, + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + test_deps = [ + ":appoptimize_java_grpc", + "//google/cloud/location:location_java_grpc", + ], + transport = "grpc+rest", + deps = [ + ":appoptimize_java_proto", + "//google/api:api_java_proto", + "//google/cloud/location:location_java_proto", + ], +) + +java_gapic_test( + name = "appoptimize_java_gapic_test_suite", + test_classes = [ + "com.google.cloud.appoptimize.v1beta.AppOptimizeClientHttpJsonTest", + "com.google.cloud.appoptimize.v1beta.AppOptimizeClientTest", + ], + runtime_deps = [":appoptimize_java_gapic_test"], +) + +# Open Source Packages +java_gapic_assembly_gradle_pkg( + name = "google-cloud-appoptimize-v1beta-java", + include_samples = True, + transport = "grpc+rest", + deps = [ + ":appoptimize_java_gapic", + ":appoptimize_java_grpc", + ":appoptimize_java_proto", + ":appoptimize_proto", + ], +) + +############################################################################## +# Go +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "go_gapic_assembly_pkg", + "go_gapic_library", + "go_grpc_library", +) + +go_grpc_library( + name = "appoptimize_go_proto", + importpath = "cloud.google.com/go/appoptimize/apiv1beta/appoptimizepb", + protos = [":appoptimize_proto"], + deps = [ + "//google/api:annotations_go_proto", + "//google/longrunning:longrunning_go_proto", + ], +) + +go_gapic_library( + name = "appoptimize_go_gapic", + srcs = [":appoptimize_proto_with_info"], + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + importpath = "cloud.google.com/go/appoptimize/apiv1beta;appoptimize", + metadata = True, + release_level = "beta", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [ + ":appoptimize_go_proto", + "//google/cloud/location:location_go_proto", + "//google/longrunning:longrunning_go_proto", + "@com_google_cloud_go_longrunning//:go_default_library", + "@com_google_cloud_go_longrunning//autogen:go_default_library", + "@io_bazel_rules_go//proto/wkt:struct_go_proto", + ], +) + +# Open Source Packages +go_gapic_assembly_pkg( + name = "gapi-cloud-appoptimize-v1beta-go", + deps = [ + ":appoptimize_go_gapic", + ":appoptimize_go_gapic_srcjar-metadata.srcjar", + ":appoptimize_go_gapic_srcjar-snippets.srcjar", + ":appoptimize_go_gapic_srcjar-test.srcjar", + ":appoptimize_go_proto", + ], +) + +############################################################################## +# Python +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "py_gapic_assembly_pkg", + "py_gapic_library", + "py_test", +) + +py_gapic_library( + name = "appoptimize_py_gapic", + srcs = [":appoptimize_proto"], + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [ + ], +) + +py_test( + name = "appoptimize_py_gapic_test", + srcs = [ + "appoptimize_py_gapic_pytest.py", + "appoptimize_py_gapic_test.py", + ], + legacy_create_init = False, + deps = [":appoptimize_py_gapic"], +) + +# Open Source Packages +py_gapic_assembly_pkg( + name = "appoptimize-v1beta-py", + deps = [ + ":appoptimize_py_gapic", + ], +) + +############################################################################## +# PHP +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "php_gapic_assembly_pkg", + "php_gapic_library", + "php_proto_library", +) + +php_proto_library( + name = "appoptimize_php_proto", + deps = [":appoptimize_proto"], +) + +php_gapic_library( + name = "appoptimize_php_gapic", + srcs = [":appoptimize_proto_with_info"], + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + migration_mode = "NEW_SURFACE_ONLY", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [ + ":appoptimize_php_proto", + ], +) + +# Open Source Packages +php_gapic_assembly_pkg( + name = "google-cloud-appoptimize-v1beta-php", + deps = [ + ":appoptimize_php_gapic", + ":appoptimize_php_proto", + ], +) + +############################################################################## +# Node.js +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "nodejs_gapic_assembly_pkg", + "nodejs_gapic_library", +) + +nodejs_gapic_library( + name = "appoptimize_nodejs_gapic", + package_name = "@google-cloud/appoptimize", + src = ":appoptimize_proto_with_info", + extra_protoc_parameters = ["metadata"], + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + package = "google.cloud.appoptimize.v1beta", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [], +) + +nodejs_gapic_assembly_pkg( + name = "appoptimize-v1beta-nodejs", + deps = [ + ":appoptimize_nodejs_gapic", + ":appoptimize_proto", + ], +) + +############################################################################## +# Ruby +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "ruby_cloud_gapic_library", + "ruby_gapic_assembly_pkg", + "ruby_grpc_library", + "ruby_proto_library", +) + +ruby_proto_library( + name = "appoptimize_ruby_proto", + deps = [":appoptimize_proto"], +) + +ruby_grpc_library( + name = "appoptimize_ruby_grpc", + srcs = [":appoptimize_proto"], + deps = [":appoptimize_ruby_proto"], +) + +ruby_cloud_gapic_library( + name = "appoptimize_ruby_gapic", + srcs = [":appoptimize_proto_with_info"], + extra_protoc_parameters = [ + "ruby-cloud-gem-name=google-cloud-app_optimize-v1beta", + ], + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [ + ":appoptimize_ruby_grpc", + ":appoptimize_ruby_proto", + ], +) + +# Open Source Packages +ruby_gapic_assembly_pkg( + name = "google-cloud-appoptimize-v1beta-ruby", + deps = [ + ":appoptimize_ruby_gapic", + ":appoptimize_ruby_grpc", + ":appoptimize_ruby_proto", + ], +) + +############################################################################## +# C# +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "csharp_gapic_assembly_pkg", + "csharp_gapic_library", + "csharp_grpc_library", + "csharp_proto_library", +) + +csharp_proto_library( + name = "appoptimize_csharp_proto", + extra_opts = [], + deps = [":appoptimize_proto"], +) + +csharp_grpc_library( + name = "appoptimize_csharp_grpc", + srcs = [":appoptimize_proto"], + deps = [":appoptimize_csharp_proto"], +) + +csharp_gapic_library( + name = "appoptimize_csharp_gapic", + srcs = [":appoptimize_proto_with_info"], + common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json", + grpc_service_config = "appoptimize_v1beta_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "appoptimize_v1beta.yaml", + transport = "grpc+rest", + deps = [ + ":appoptimize_csharp_grpc", + ":appoptimize_csharp_proto", + ], +) + +# Open Source Packages +csharp_gapic_assembly_pkg( + name = "google-cloud-appoptimize-v1beta-csharp", + deps = [ + ":appoptimize_csharp_gapic", + ":appoptimize_csharp_grpc", + ":appoptimize_csharp_proto", + ], +) + +############################################################################## +# C++ +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "cc_grpc_library", + "cc_proto_library", +) + +cc_proto_library( + name = "appoptimize_cc_proto", + deps = [":appoptimize_proto"], +) + +cc_grpc_library( + name = "appoptimize_cc_grpc", + srcs = [":appoptimize_proto"], + grpc_only = True, + deps = [":appoptimize_cc_proto"], +) diff --git a/google/cloud/appoptimize/v1beta/app_optimize.proto b/google/cloud/appoptimize/v1beta/app_optimize.proto new file mode 100644 index 0000000000..b5b735beaf --- /dev/null +++ b/google/cloud/appoptimize/v1beta/app_optimize.proto @@ -0,0 +1,407 @@ +// Copyright 2026 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.appoptimize.v1beta; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "cloud.google.com/go/appoptimize/apiv1beta/appoptimizepb;appoptimizepb"; +option java_multiple_files = true; +option java_outer_classname = "AppOptimizeProto"; +option java_package = "com.google.cloud.appoptimize.v1beta"; + +// Resource definition for App Hub Application. +option (google.api.resource_definition) = { + type: "apphub.googleapis.com/Application" + pattern: "projects/{project}/locations/{location}/applications/{application}" +}; + +// Service for managing and querying optimization reports. +service AppOptimize { + option (google.api.default_host) = "appoptimize.googleapis.com"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; + + // Creates a new report. + // + // This initiates a long-running operation that, upon completion, results + // in a report resource. Once the report is created, its results can be read + // via `ReadReport`. + rpc CreateReport(CreateReportRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1beta/{parent=projects/*/locations/*}/reports" + body: "report" + }; + option (google.api.method_signature) = "parent,report,report_id"; + option (google.longrunning.operation_info) = { + response_type: "Report" + metadata_type: "OperationMetadata" + }; + } + + // Retrieves the details of a report configuration. + rpc GetReport(GetReportRequest) returns (Report) { + option (google.api.http) = { + get: "/v1beta/{name=projects/*/locations/*/reports/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Lists reports within a given project. + rpc ListReports(ListReportsRequest) returns (ListReportsResponse) { + option (google.api.http) = { + get: "/v1beta/{parent=projects/*/locations/*}/reports" + }; + option (google.api.method_signature) = "parent"; + } + + // Deletes the specified report. + rpc DeleteReport(DeleteReportRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1beta/{name=projects/*/locations/*/reports/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Reads data within a specified report. + rpc ReadReport(ReadReportRequest) returns (ReadReportResponse) { + option (google.api.http) = { + post: "/v1beta/{name=projects/*/locations/*/reports/*}:read" + body: "*" + }; + option (google.api.method_signature) = "name"; + } +} + +// Request message for the `CreateReport` method. +message CreateReportRequest { + // Required. The parent Google Cloud project that will own the report. + // + // This value does not define the scope of the report data. See `Report.scope` + // for setting the data scope. + // + // Format: `projects/{project}/locations/{location}`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "appoptimize.googleapis.com/Report" + } + ]; + + // Required. The ID to use for this report. This ID must be unique within + // the parent project and should comply with RFC 1034 restrictions (letters, + // numbers, and hyphen, with the first character a letter, the last a letter + // or a number, and a 63 character maximum). + string report_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The report resource to create. + Report report = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// A configuration that defines the parameters for the data represented by a +// report. +message Report { + option (google.api.resource) = { + type: "appoptimize.googleapis.com/Report" + pattern: "projects/{project}/locations/{location}/reports/{report}" + plural: "reports" + singular: "report" + }; + + // Defines this report's expiration time. + oneof expiration { + // Output only. Timestamp in UTC of when this report expires. Once the + // report expires, it will no longer be accessible and the report's + // underlying data will be deleted. + google.protobuf.Timestamp expire_time = 6 + [(google.api.field_behavior) = OUTPUT_ONLY]; + } + + // Identifier. The name of this report. + string name = 1 [(google.api.field_behavior) = IDENTIFIER]; + + // Required. A list of dimensions to include in the report. Supported values: + // + // * `project` + // * `application` + // * `service_or_workload` + // * `resource` + // * `resource_type` + // * `location` + // * `product_display_name` + // * `sku` + // * `month` + // * `day` + // * `hour` + // + // To aggregate results by time, specify at least one time dimension + // (`month`, `day`, or `hour`). All time dimensions use Pacific Time, + // respect Daylight Saving Time (DST), and follow these ISO 8601 formats: + // + // * `month`: `YYYY-MM` (e.g., `2024-01`) + // * `day`: `YYYY-MM-DD` (e.g., `2024-01-10`) + // * `hour`: `YYYY-MM-DDTHH` (e.g., `2024-01-10T00`) + // + // If the time range filter does not align with the selected time dimension, + // the range is expanded to encompass the full period of the finest-grained + // time dimension. + // + // For example, if the filter is `2026-01-10` through `2026-01-12` and the + // `month` dimension is selected, the effective time range expands to include + // all of January (`2026-01-01` to `2026-02-01`). + repeated string dimensions = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. A list of metrics to include in the report. Supported values: + // + // * `cost` + // * `cpu_mean_utilization` + // * `cpu_usage_core_seconds` + // * `cpu_allocation_core_seconds` + // * `cpu_p95_utilization` + // * `memory_mean_utilization` + // * `memory_usage_byte_seconds` + // * `memory_allocation_byte_seconds` + // * `memory_p95_utilization` + repeated string metrics = 7 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The resource containers for which to fetch data. Default is the + // project specified in the report's parent. + repeated Scope scopes = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A Common Expression Language (CEL) expression used to filter the + // data for the report. + // + // Predicates may refer to any dimension. Filtering must conform to these + // constraints: + // + // * All string field predicates must use exact string matches. + // * Multiple predicates referring to the same string field must be joined + // using the logical OR operator ('||'). + // * All other predicates must be joined using the logical AND operator + // (`&&`). + // * A predicate on a time dimension (e.g., `day`) specifying the start time + // must use a greater-than-or-equal-to comparison (`>=`). + // * A predicate on a time dimension specifying the end time must use a + // less-than comparison (`<`). + // + // Examples: + // + // 1. Filter by a specific resource type: + // `"resource_type == 'compute.googleapis.com/Instance'"` + // + // 2. Filter data points that fall within a specific absolute time interval: + // `"hour >= timestamp('2024-01-01T00:00:00Z') && + // hour < timestamp('2024-02-01T00:00:00Z')"` + // + // 3. Filter data points that fall within the past 72 hours: + // `"hour >= now - duration('72h')"` + // + // 4. Combine string predicate with time interval predicate: + // `"(location == 'us-east1' || location == 'us-west1') && + // hour >= timestamp('2023-12-01T00:00:00Z') && + // hour < timestamp('2024-02-01T00:00:00Z')"` + // + // If the filter omits time dimensions (`month`, `day`, `hour`), the report + // defaults to a 7-day range ending at the previous Pacific Time midnight, + // with Daylight Saving Time (DST) applied. + // + // For example, if the current Pacific Time is `2026-01-05T12:00:00`, + // the default range is `2025-12-29T00:00:00` to `2026-01-05T00:00:00` Pacific + // time. + string filter = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Specifies the report scope. +message Scope { + oneof scope { + // Required. A Google Cloud Platform project to fetch data from. + // + // Format: `"projects/{project}"`. + string project = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Project" + } + ]; + + // Required. An App Hub Application to fetch data from. + // + // Format: + // `"projects/{project}/locations/{location}/applications/{application}"`. + string application = 2 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "apphub.googleapis.com/Application" + } + ]; + } +} + +// Request message for the `GetReport` method. +message GetReportRequest { + // Required. The name of the report to retrieve. + // + // Format: `projects/{project}/locations/{location}/reports/{report_id}`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "appoptimize.googleapis.com/Report" + } + ]; +} + +// Request message for the `ListReports` method. +message ListReportsRequest { + // Required. The parent project whose reports are to be listed. + // + // Format: `projects/{project}/locations/{location}`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "appoptimize.googleapis.com/Report" + } + ]; + + // Optional. The maximum number of reports to return. The service may return + // fewer than this value. If unspecified, the server will determine the number + // of results to return. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A page token, received from a previous `ListReports` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to `ListReports` must match + // the call that provided the page token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// Response message for the `ListReports` method. +message ListReportsResponse { + // The list of reports. + repeated Report reports = 1; + + // A token that can be sent as `page_token` to retrieve the next page. + // If this field is empty, there are no subsequent pages. + string next_page_token = 2; +} + +// Request message for the `DeleteReport` method. +message DeleteReportRequest { + // Required. The name of the report to delete. + // + // Format: `projects/{project}/locations/{location}/reports/{report_id}`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "appoptimize.googleapis.com/Report" + } + ]; + + // Optional. If set to true, and the report is not found, the request will + // succeed but no action will be taken on the server. + bool allow_missing = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// Request message for the `ReadReport` method. +message ReadReportRequest { + // Required. The resource name of the report to query. + // + // Format: `projects/{project}/locations/{location}/reports/{report_id}`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "appoptimize.googleapis.com/Report" + } + ]; + + // Optional. The maximum number of rows to return. The service may return + // fewer than this value. If unspecified, at most 10,000 rows will be returned + // per page. The maximum allowed value is 25,000; values above 25,000 are + // coerced to 25,000. + int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A page token, received from a previous `ReadReport` call, to + // retrieve the subsequent page of results. When `page_token` is specified, + // `job_reference` must also be provided from the previous response, and the + // `statement` field must not be set. + string page_token = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Response message for the `ReadReport` method. +message ReadReportResponse { + // A list of rows, where each row represents a record from the report. + repeated google.protobuf.ListValue rows = 1; + + // The columns describing the structure of the data in the `rows` field. + repeated Column columns = 5; + + // A token that can be sent as `page_token` in a subsequent `ReadReport` + // request to retrieve the next page of results. If this field is empty, + // there are no further pages. + string next_page_token = 3; +} + +// Describes a single column within `Columns`. +message Column { + // The name of the column. + // + // This field: + // + // * Contains only letters (a-z, A-Z), numbers (0-9), or underscores (_); + // * Start with a letter or underscore; and + // * Has a maximum length is 128 characters. + string name = 1; + + // The data type of the column. + // + // Supported values include: + // + // * `STRING` + // * `INT64` + // * `FLOAT64` + // * `BOOLEAN` + // * `TIMESTAMP` + // * `RECORD` + // + // `RECORD` indicates that the field contains a nested schema, described in + // the `columns` property of this `Column`. + string type = 2; + + // The mode of the column, indicating if it is nullable, required, or + // repeated. + // + // Possible values: + // + // * `NULLABLE`: The column allows NULL values. + // * `REQUIRED`: The column does not allow NULL values. + // * `REPEATED`: The column contains an array of values. + string mode = 3; + + // If the `type` of this column is `RECORD`, this sub-field describes the + // nested structure. + repeated Column columns = 4; +} + +// Represents metadata related to the creation of a Report. This value is +// embedded in the Operation object returned by `CreateReport`. +message OperationMetadata {} diff --git a/google/cloud/appoptimize/v1beta/appoptimize_v1beta.yaml b/google/cloud/appoptimize/v1beta/appoptimize_v1beta.yaml new file mode 100644 index 0000000000..ffd64b768c --- /dev/null +++ b/google/cloud/appoptimize/v1beta/appoptimize_v1beta.yaml @@ -0,0 +1,120 @@ +type: google.api.Service +config_version: 3 +name: appoptimize.googleapis.com +title: App Optimize API + +apis: +- name: google.cloud.appoptimize.v1beta.AppOptimize +- name: google.cloud.location.Locations +- name: google.longrunning.Operations + +types: +- name: google.cloud.appoptimize.v1beta.OperationMetadata + +documentation: + summary: |- + The App Optimize API provides developers and platform teams with tools to + monitor, analyze, and improve the performance and cost-efficiency of their + cloud applications. + rules: + - selector: google.cloud.location.Locations.GetLocation + description: Gets information about a location. + + - selector: google.cloud.location.Locations.ListLocations + description: |- + Lists information about the supported locations for this service. + + This method lists locations based on the resource scope provided in + the [ListLocationsRequest.name] field: + + * **Global locations**: If `name` is empty, the method lists the + public locations available to all projects. * **Project-specific + locations**: If `name` follows the format + `projects/{project}`, the method lists locations visible to that + specific project. This includes public, private, or other + project-specific locations enabled for the project. + + For gRPC and client library implementations, the resource name is + passed as the `name` field. For direct service calls, the resource + name is + incorporated into the request path based on the specific service + implementation and version. + +http: + rules: + - selector: google.cloud.location.Locations.GetLocation + get: '/v1beta/{name=projects/*/locations/*}' + - selector: google.cloud.location.Locations.ListLocations + get: '/v1beta/{name=projects/*}/locations' + - selector: google.longrunning.Operations.CancelOperation + post: '/v1beta/{name=projects/*/locations/*/operations/*}:cancel' + body: '*' + - selector: google.longrunning.Operations.DeleteOperation + delete: '/v1beta/{name=projects/*/locations/*/operations/*}' + - selector: google.longrunning.Operations.GetOperation + get: '/v1beta/{name=projects/*/locations/*/operations/*}' + - selector: google.longrunning.Operations.ListOperations + get: '/v1beta/{name=projects/*/locations/*}/operations' + +authentication: + rules: + - selector: 'google.cloud.appoptimize.v1beta.AppOptimize.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: google.cloud.location.Locations.GetLocation + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: google.cloud.location.Locations.ListLocations + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: 'google.longrunning.Operations.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + +publishing: + new_issue_uri: https://issuetracker.google.com/issues/new?component=190865&template=1161103 + documentation_uri: https://docs.cloud.google.com/app-optimize/overview + api_short_name: appoptimize + github_label: 'api: appoptimize' + doc_tag_prefix: appoptimize + organization: CLOUD + library_settings: + - version: google.cloud.appoptimize.v1beta + launch_stage: BETA + java_settings: + common: + destinations: + - PACKAGE_MANAGER + cpp_settings: + common: + destinations: + - PACKAGE_MANAGER + php_settings: + common: + destinations: + - PACKAGE_MANAGER + python_settings: + common: + destinations: + - PACKAGE_MANAGER + node_settings: + common: + destinations: + - PACKAGE_MANAGER + dotnet_settings: + common: + destinations: + - PACKAGE_MANAGER + ruby_settings: + common: + destinations: + - PACKAGE_MANAGER + go_settings: + common: + destinations: + - PACKAGE_MANAGER + proto_reference_documentation_uri: https://docs.cloud.google.com/app-optimize/overview diff --git a/google/cloud/appoptimize/v1beta/appoptimize_v1beta_grpc_service_config.json b/google/cloud/appoptimize/v1beta/appoptimize_v1beta_grpc_service_config.json new file mode 100644 index 0000000000..e9ad2b49cf --- /dev/null +++ b/google/cloud/appoptimize/v1beta/appoptimize_v1beta_grpc_service_config.json @@ -0,0 +1,24 @@ +{ + "methodConfig": [{ + "name": [ + { "service": "google.cloud.appoptimize.v1beta.AppOptimize", "method": "ListReports" }, + { "service": "google.cloud.appoptimize.v1beta.AppOptimize", "method": "GetReport" }, + { "service": "google.cloud.appoptimize.v1beta.AppOptimize", "method": "ReadReport" } + ], + "timeout": "60s", + "retryPolicy": { + "maxAttempts": 5, + "initialBackoff": "1s", + "maxBackoff": "10s", + "backoffMultiplier": 1.3, + "retryableStatusCodes": ["UNAVAILABLE"] + } + }, + { + "name": [ + { "service": "google.cloud.appoptimize.v1beta.AppOptimize", "method": "CreateReport" }, + { "service": "google.cloud.appoptimize.v1beta.AppOptimize", "method": "DeleteReport" } + ], + "timeout": "60s" + }] +}