mirror of
https://github.com/googleapis/googleapis.git
synced 2026-08-16 13:00:34 +02:00
408 lines
14 KiB
Protocol Buffer
408 lines
14 KiB
Protocol Buffer
// 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 csharp_namespace = "Google.Cloud.AppOptimize.V1Beta";
|
|
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 {}
|