123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- // Copyright 2019 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";
- option csharp_namespace = "Google.Cloud.Asset.V1p2Beta1";
- option go_package = "google.golang.org/genproto/googleapis/cloud/asset/v1p2beta1;asset";
- 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";
- }
- }
- // 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;
- }
- }
- // A Cloud Pubsub destination.
- message PubsubDestination {
- // The name of the Cloud 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 Cloud Pubsub.
- 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 and 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 and 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];
- }
- // 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;
- }
|