# frozen_string_literal: true

# 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Asset
      module V1
        # Export asset request.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The relative name of the root asset. This can only be an
        #     organization number (such as "organizations/123"), a project ID (such as
        #     "projects/my-project-id"), or a project number (such as "projects/12345"),
        #     or a folder number (such as "folders/123").
        # @!attribute [rw] read_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Timestamp to take an asset snapshot. This can only be set to a timestamp
        #     between the current time and the current time minus 35 days (inclusive).
        #     If not specified, the current time will be used. Due to delays in resource
        #     data collection and indexing, there is a volatile window during which
        #     running the same query may get different results.
        # @!attribute [rw] asset_types
        #   @return [::Array<::String>]
        #     A list of asset types of which to take a snapshot for. For example:
        #     "compute.googleapis.com/Disk". If specified, only matching assets will be
        #     returned. See [Introduction to Cloud Asset
        #     Inventory](https://cloud.google.com/asset-inventory/docs/overview)
        #     for all supported asset types.
        # @!attribute [rw] content_type
        #   @return [::Google::Cloud::Asset::V1::ContentType]
        #     Asset content type. If not specified, no content but the asset name will be
        #     returned.
        # @!attribute [rw] output_config
        #   @return [::Google::Cloud::Asset::V1::OutputConfig]
        #     Required. Output configuration indicating where the results will be output
        #     to. All results will be in newline delimited JSON format.
        class ExportAssetsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The export asset response. This message is returned by the
        # google.longrunning.Operations.GetOperation
        # method in the returned
        # {::Google::Longrunning::Operation#response google.longrunning.Operation.response}
        # field.
        # @!attribute [rw] read_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Time the snapshot was taken.
        # @!attribute [rw] output_config
        #   @return [::Google::Cloud::Asset::V1::OutputConfig]
        #     Output configuration indicating where the results were output to.
        #     All results are in JSON format.
        class ExportAssetsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Batch get assets history request.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The relative name of the root asset. It can only be an
        #     organization number (such as "organizations/123"), a project ID (such as
        #     "projects/my-project-id")", or a project number (such as "projects/12345").
        # @!attribute [rw] asset_names
        #   @return [::Array<::String>]
        #     A list of the full names of the assets. 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)
        #     and [Resource Name
        #     Format](https://cloud.google.com/asset-inventory/docs/resource-name-format)
        #     for more info.
        #
        #     The request becomes a no-op if the asset name list is empty, and the max
        #     size of the asset name list is 100 in one request.
        # @!attribute [rw] content_type
        #   @return [::Google::Cloud::Asset::V1::ContentType]
        #     Optional. The content type.
        # @!attribute [rw] read_time_window
        #   @return [::Google::Cloud::Asset::V1::TimeWindow]
        #     Optional. The time window for the asset history. Both start_time and
        #     end_time are optional and if set, it must be after the current time minus
        #     35 days. If end_time is not set, it is default to current timestamp.
        #     If start_time is not set, the snapshot of the assets at end_time will be
        #     returned. The returned results contain all temporal assets whose time
        #     window overlap with read_time_window.
        class BatchGetAssetsHistoryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Batch get assets history response.
        # @!attribute [rw] assets
        #   @return [::Array<::Google::Cloud::Asset::V1::TemporalAsset>]
        #     A list of assets with valid time windows.
        class BatchGetAssetsHistoryResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Create asset feed request.
        # @!attribute [rw] parent
        #   @return [::String]
        #     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").
        # @!attribute [rw] feed_id
        #   @return [::String]
        #     Required. This is the client-assigned asset feed identifier and it needs to
        #     be unique under a specific parent project/folder/organization.
        # @!attribute [rw] feed
        #   @return [::Google::Cloud::Asset::V1::Feed]
        #     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
        class CreateFeedRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Get asset feed request.
        # @!attribute [rw] name
        #   @return [::String]
        #     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
        class GetFeedRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List asset feeds request.
        # @!attribute [rw] parent
        #   @return [::String]
        #     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").
        class ListFeedsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] feeds
        #   @return [::Array<::Google::Cloud::Asset::V1::Feed>]
        #     A list of feeds.
        class ListFeedsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Update asset feed request.
        # @!attribute [rw] feed
        #   @return [::Google::Cloud::Asset::V1::Feed]
        #     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.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     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.
        class UpdateFeedRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] name
        #   @return [::String]
        #     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
        class DeleteFeedRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Output configuration for export assets destination.
        # @!attribute [rw] gcs_destination
        #   @return [::Google::Cloud::Asset::V1::GcsDestination]
        #     Destination on Cloud Storage.
        # @!attribute [rw] bigquery_destination
        #   @return [::Google::Cloud::Asset::V1::BigQueryDestination]
        #     Destination on BigQuery. The output table stores the fields in asset
        #     proto as columns in BigQuery. The resource/iam_policy field is converted
        #     to a record with each field to a column, except metadata to a single JSON
        #     string.
        class OutputConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A Cloud Storage location.
        # @!attribute [rw] uri
        #   @return [::String]
        #     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.
        # @!attribute [rw] uri_prefix
        #   @return [::String]
        #     The uri prefix of all generated Cloud Storage objects. For example:
        #     "gs://bucket_name/object_name_prefix". Each object uri is in format:
        #     "gs://bucket_name/object_name_prefix/<asset type>/<shard number> and only
        #     contains assets for that type. <shard number> starts from 0. For example:
        #     "gs://bucket_name/object_name_prefix/compute.googleapis.com/Disk/0" is
        #     the first shard of output objects containing all
        #     compute.googleapis.com/Disk assets. An INVALID_ARGUMENT error will be
        #     returned if file with the same name "gs://bucket_name/object_name_prefix"
        #     already exists.
        class GcsDestination
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A BigQuery destination.
        # @!attribute [rw] dataset
        #   @return [::String]
        #     Required. The BigQuery dataset in format
        #     "projects/projectId/datasets/datasetId", to which the snapshot result
        #     should be exported. If this dataset does not exist, the export call returns
        #     an INVALID_ARGUMENT error.
        # @!attribute [rw] table
        #   @return [::String]
        #     Required. The BigQuery table to which the snapshot result should be
        #     written. If this table does not exist, a new table with the given name
        #     will be created.
        # @!attribute [rw] force
        #   @return [::Boolean]
        #     If the destination table already exists and this flag is `TRUE`, the
        #     table will be overwritten by the contents of assets snapshot. If the flag
        #     is `FALSE` or unset and the destination table already exists, the export
        #     call returns an INVALID_ARGUMEMT error.
        class BigQueryDestination
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A Pub/Sub destination.
        # @!attribute [rw] topic
        #   @return [::String]
        #     The name of the Pub/Sub topic to publish to.
        #     For example: `projects/PROJECT_ID/topics/TOPIC_ID`.
        class PubsubDestination
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Output configuration for asset feed destination.
        # @!attribute [rw] pubsub_destination
        #   @return [::Google::Cloud::Asset::V1::PubsubDestination]
        #     Destination on Pub/Sub.
        class FeedOutputConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # 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:
        # Pub/Sub topics.
        # @!attribute [rw] name
        #   @return [::String]
        #     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.
        # @!attribute [rw] asset_names
        #   @return [::Array<::String>]
        #     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.
        # @!attribute [rw] asset_types
        #   @return [::Array<::String>]
        #     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 [this
        #     topic](https://cloud.google.com/asset-inventory/docs/supported-asset-types)
        #     for a list of all supported asset types.
        # @!attribute [rw] content_type
        #   @return [::Google::Cloud::Asset::V1::ContentType]
        #     Asset content type. If not specified, no content but the asset name and
        #     type will be returned.
        # @!attribute [rw] feed_output_config
        #   @return [::Google::Cloud::Asset::V1::FeedOutputConfig]
        #     Required. Feed output configuration defining where the asset updates are
        #     published to.
        class Feed
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Search all resources request.
        # @!attribute [rw] scope
        #   @return [::String]
        #     Required. A scope can be a project, a folder or an organization. The search
        #     is limited to the resources within the `scope`.
        #
        #     The allowed values are:
        #
        #     * projects/\\{PROJECT_ID}
        #     * projects/\\{PROJECT_NUMBER}
        #     * folders/\\{FOLDER_NUMBER}
        #     * organizations/\\{ORGANIZATION_NUMBER}
        # @!attribute [rw] query
        #   @return [::String]
        #     Optional. The query statement. An empty query can be specified to search
        #     all the resources of certain `asset_types` within the given `scope`.
        #
        #     Examples:
        #
        #     * `name : "Important"` to find Cloud resources whose name contains
        #       "Important" as a word.
        #     * `displayName : "Impor*"` to find Cloud resources whose display name
        #       contains "Impor" as a word prefix.
        #     * `description : "*por*"` to find Cloud resources whose description
        #       contains "por" as a substring.
        #     * `location : "us-west*"` to find Cloud resources whose location is
        #       prefixed with "us-west".
        #     * `labels : "prod"` to find Cloud resources whose labels contain "prod" as
        #       a key or value.
        #     * `labels.env : "prod"` to find Cloud resources which have a label "env"
        #       and its value is "prod".
        #     * `labels.env : *` to find Cloud resources which have a label "env".
        #     * `"Important"` to find Cloud resources which contain "Important" as a word
        #       in any of the searchable fields.
        #     * `"Impor*"` to find Cloud resources which contain "Impor" as a word prefix
        #       in any of the searchable fields.
        #     * `"*por*"` to find Cloud resources which contain "por" as a substring in
        #       any of the searchable fields.
        #     * `("Important" AND location : ("us-west1" OR "global"))` to find Cloud
        #       resources which contain "Important" as a word in any of the searchable
        #       fields and are also located in the "us-west1" region or the "global"
        #       location.
        #
        #     See [how to construct a
        #     query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query)
        #     for more details.
        # @!attribute [rw] asset_types
        #   @return [::Array<::String>]
        #     Optional. A list of asset types that this request searches for. If empty,
        #     it will search all the [searchable asset
        #     types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types).
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. The page size for search result pagination. Page size is capped
        #     at 500 even if a larger value is given. If set to zero, server will pick an
        #     appropriate default. Returned results may be fewer than requested. When
        #     this happens, there could be more results as long as `next_page_token` is
        #     returned.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. If present, then retrieve the next batch of results from the
        #     preceding call to this method. `page_token` must be the value of
        #     `next_page_token` from the previous response. The values of all other
        #     method parameters, must be identical to those in the previous call.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. A comma separated list of fields specifying the sorting order of
        #     the results. The default order is ascending. Add " DESC" after the field
        #     name to indicate descending order. Redundant space characters are ignored.
        #     Example: "location DESC, name". See [supported resource metadata
        #     fields](https://cloud.google.com/asset-inventory/docs/searching-resources#query_on_resource_metadata_fields)
        #     for more details.
        class SearchAllResourcesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Search all resources response.
        # @!attribute [rw] results
        #   @return [::Array<::Google::Cloud::Asset::V1::ResourceSearchResult>]
        #     A list of Resources that match the search query. It contains the resource
        #     standard metadata information.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     If there are more results than those appearing in this response, then
        #     `next_page_token` is included. To get the next set of results, call this
        #     method again using the value of `next_page_token` as `page_token`.
        class SearchAllResourcesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Search all IAM policies request.
        # @!attribute [rw] scope
        #   @return [::String]
        #     Required. A scope can be a project, a folder or an organization. The search
        #     is limited to the IAM policies within the `scope`.
        #
        #     The allowed values are:
        #
        #     * projects/\\{PROJECT_ID}
        #     * projects/\\{PROJECT_NUMBER}
        #     * folders/\\{FOLDER_NUMBER}
        #     * organizations/\\{ORGANIZATION_NUMBER}
        # @!attribute [rw] query
        #   @return [::String]
        #     Optional. The query statement. An empty query can be specified to search
        #     all the IAM policies within the given `scope`.
        #
        #     Examples:
        #
        #     * `policy : "amy@gmail.com"` to find Cloud IAM policy bindings that
        #       specify user "amy@gmail.com".
        #     * `policy : "roles/compute.admin"` to find Cloud IAM policy bindings that
        #       specify the Compute Admin role.
        #     * `policy.role.permissions : "storage.buckets.update"` to find Cloud IAM
        #       policy bindings that specify a role containing "storage.buckets.update"
        #       permission.
        #     * `resource : "organizations/123"` to find Cloud IAM policy bindings that
        #       are set on "organizations/123".
        #     * `(resource : ("organizations/123" OR "folders/1234") AND policy : "amy")`
        #       to find Cloud IAM policy bindings that are set on "organizations/123" or
        #       "folders/1234", and also specify user "amy".
        #
        #     See [how to construct a
        #     query](https://cloud.google.com/asset-inventory/docs/searching-iam-policies#how_to_construct_a_query)
        #     for more details.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. The page size for search result pagination. Page size is capped
        #     at 500 even if a larger value is given. If set to zero, server will pick an
        #     appropriate default. Returned results may be fewer than requested. When
        #     this happens, there could be more results as long as `next_page_token` is
        #     returned.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. If present, retrieve the next batch of results from the preceding
        #     call to this method. `page_token` must be the value of `next_page_token`
        #     from the previous response. The values of all other method parameters must
        #     be identical to those in the previous call.
        class SearchAllIamPoliciesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Search all IAM policies response.
        # @!attribute [rw] results
        #   @return [::Array<::Google::Cloud::Asset::V1::IamPolicySearchResult>]
        #     A list of IamPolicy that match the search query. Related information such
        #     as the associated resource is returned along with the policy.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Set if there are more results than those appearing in this response; to get
        #     the next set of results, call this method again, using this value as the
        #     `page_token`.
        class SearchAllIamPoliciesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Asset content type.
        module ContentType
          # Unspecified content type.
          CONTENT_TYPE_UNSPECIFIED = 0

          # Resource metadata.
          RESOURCE = 1

          # The actual IAM policy set on a resource.
          IAM_POLICY = 2

          # The Cloud Organization Policy set on an asset.
          ORG_POLICY = 4

          # The Cloud Access context mananger Policy set on an asset.
          ACCESS_POLICY = 5
        end
      end
    end
  end
end