google.cloud.asset.v1p2beta1.asset_service.proto Maven / Gradle / Ivy
// Copyright 2024 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.asset.v1p2beta1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/asset/v1p2beta1/assets.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Cloud.Asset.V1P2Beta1";
option go_package = "cloud.google.com/go/asset/apiv1p2beta1/assetpb;assetpb";
option java_multiple_files = true;
option java_outer_classname = "AssetServiceProto";
option java_package = "com.google.cloud.asset.v1p2beta1";
option php_namespace = "Google\\Cloud\\Asset\\V1p2beta1";
// Asset service definition.
service AssetService {
option (google.api.default_host) = "cloudasset.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform";
// Creates a feed in a parent project/folder/organization to listen to its
// asset updates.
rpc CreateFeed(CreateFeedRequest) returns (Feed) {
option (google.api.http) = {
post: "/v1p2beta1/{parent=*/*}/feeds"
body: "*"
};
option (google.api.method_signature) = "parent";
}
// Gets details about an asset feed.
rpc GetFeed(GetFeedRequest) returns (Feed) {
option (google.api.http) = {
get: "/v1p2beta1/{name=*/*/feeds/*}"
};
option (google.api.method_signature) = "name";
}
// Lists all asset feeds in a parent project/folder/organization.
rpc ListFeeds(ListFeedsRequest) returns (ListFeedsResponse) {
option (google.api.http) = {
get: "/v1p2beta1/{parent=*/*}/feeds"
};
option (google.api.method_signature) = "parent";
}
// Updates an asset feed configuration.
rpc UpdateFeed(UpdateFeedRequest) returns (Feed) {
option (google.api.http) = {
patch: "/v1p2beta1/{feed.name=*/*/feeds/*}"
body: "*"
};
option (google.api.method_signature) = "feed";
}
// Deletes an asset feed.
rpc DeleteFeed(DeleteFeedRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1p2beta1/{name=*/*/feeds/*}"
};
option (google.api.method_signature) = "name";
}
}
// The export asset response. This message is returned by the
// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation]
// method in the returned
// [google.longrunning.Operation.response][google.longrunning.Operation.response]
// field.
message ExportAssetsResponse {
// Time the snapshot was taken.
google.protobuf.Timestamp read_time = 1;
// Output configuration indicating where the results were output to.
OutputConfig output_config = 2;
}
// Batch get assets history response.
message BatchGetAssetsHistoryResponse {
// A list of assets with valid time windows.
repeated TemporalAsset assets = 1;
}
// Create asset feed request.
message CreateFeedRequest {
// Required. The name of the project/folder/organization where this feed
// should be created in. It can only be an organization number (such as
// "organizations/123"), a folder number (such as "folders/123"), a project ID
// (such as "projects/my-project-id"), or a project number (such as
// "projects/12345").
string parent = 1 [(google.api.field_behavior) = REQUIRED];
// Required. This is the client-assigned asset feed identifier and it needs to
// be unique under a specific parent project/folder/organization.
string feed_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The feed details. The field `name` must be empty and it will be
// generated in the format of: projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
Feed feed = 3 [(google.api.field_behavior) = REQUIRED];
}
// Get asset feed request.
message GetFeedRequest {
// Required. The name of the Feed and it must be in the format of:
// projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "cloudasset.googleapis.com/Feed" }
];
}
// List asset feeds request.
message ListFeedsRequest {
// Required. The parent project/folder/organization whose feeds are to be
// listed. It can only be using project/folder/organization number (such as
// "folders/12345")", or a project ID (such as "projects/my-project-id").
string parent = 1 [(google.api.field_behavior) = REQUIRED];
}
message ListFeedsResponse {
// A list of feeds.
repeated Feed feeds = 1;
}
// Update asset feed request.
message UpdateFeedRequest {
// Required. The new values of feed details. It must match an existing feed
// and the field `name` must be in the format of:
// projects/project_number/feeds/feed_id or
// folders/folder_number/feeds/feed_id or
// organizations/organization_number/feeds/feed_id.
Feed feed = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Only updates the `feed` fields indicated by this mask.
// The field mask must not be empty, and it must not contain fields that
// are immutable or only set by the server.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
}
message DeleteFeedRequest {
// Required. The name of the feed and it must be in the format of:
// projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "cloudasset.googleapis.com/Feed" }
];
}
// Output configuration for export assets destination.
message OutputConfig {
// Asset export destination.
oneof destination {
// Destination on Cloud Storage.
GcsDestination gcs_destination = 1;
}
}
// A Cloud Storage location.
message GcsDestination {
// Required.
oneof object_uri {
// The URI of the Cloud Storage object. It's the same URI that is used by
// gsutil. For example: "gs://bucket_name/object_name". See [Viewing and
// Editing Object
// Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata)
// for more information.
string uri = 1;
}
}
// Asset content type.
enum ContentType {
// Unspecified content type.
CONTENT_TYPE_UNSPECIFIED = 0;
// Resource metadata.
RESOURCE = 1;
// The actual IAM policy set on a resource.
IAM_POLICY = 2;
}
// A Pub/Sub destination.
message PubsubDestination {
// The name of the Pub/Sub topic to publish to.
// For example: `projects/PROJECT_ID/topics/TOPIC_ID`.
string topic = 1;
}
// Output configuration for asset feed destination.
message FeedOutputConfig {
// Asset feed destination.
oneof destination {
// Destination on Pub/Sub.
PubsubDestination pubsub_destination = 1;
}
}
// An asset feed used to export asset updates to a destinations.
// An asset feed filter controls what updates are exported.
// The asset feed must be created within a project, organization, or
// folder. Supported destinations are:
// Cloud Pub/Sub topics.
message Feed {
option (google.api.resource) = {
type: "cloudasset.googleapis.com/Feed"
pattern: "projects/{project}/feeds/{feed}"
pattern: "folders/{folder}/feeds/{feed}"
pattern: "organizations/{organization}/feeds/{feed}"
history: ORIGINALLY_SINGLE_PATTERN
};
// Required. The format will be
// projects/{project_number}/feeds/{client-assigned_feed_identifier} or
// folders/{folder_number}/feeds/{client-assigned_feed_identifier} or
// organizations/{organization_number}/feeds/{client-assigned_feed_identifier}
//
// The client-assigned feed identifier must be unique within the parent
// project/folder/organization.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// A list of the full names of the assets to receive updates. You must specify
// either or both of asset_names and asset_types. Only asset updates matching
// specified asset_names or asset_types are exported to the feed. For
// example:
// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
// See [Resource
// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
// for more info.
repeated string asset_names = 2;
// A list of types of the assets to receive updates. You must specify either
// or both of asset_names and asset_types. Only asset updates matching
// specified asset_names or asset_types are exported to the feed.
// For example:
// "compute.googleapis.com/Disk" See [Introduction to Cloud Asset
// Inventory](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview)
// for all supported asset types.
repeated string asset_types = 3;
// Asset content type. If not specified, no content but the asset name and
// type will be returned.
ContentType content_type = 4;
// Required. Feed output configuration defining where the asset updates are
// published to.
FeedOutputConfig feed_output_config = 5
[(google.api.field_behavior) = REQUIRED];
}