/// The standard metadata of a cloud resource. #[derive(Clone, PartialEq, ::prost::Message)] pub struct StandardResourceMetadata { /// The full resource name. For example: /// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. /// See [Resource /// Names]() /// for more information. #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, /// The type of this resource. /// For example: "compute.googleapis.com/Disk". #[prost(string, tag = "2")] pub asset_type: ::prost::alloc::string::String, /// The project that this resource belongs to, in the form of /// `projects/{project_number}`. #[prost(string, tag = "3")] pub project: ::prost::alloc::string::String, /// The display name of this resource. #[prost(string, tag = "4")] pub display_name: ::prost::alloc::string::String, /// One or more paragraphs of text description of this resource. Maximum length /// could be up to 1M bytes. #[prost(string, tag = "5")] pub description: ::prost::alloc::string::String, /// Additional searchable attributes of this resource. /// Informational only. The exact set of attributes is subject to change. /// For example: project id, DNS name etc. #[prost(string, repeated, tag = "10")] pub additional_attributes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// Location can be "global", regional like "us-east1", or zonal like /// "us-west1-b". #[prost(string, tag = "11")] pub location: ::prost::alloc::string::String, /// Labels associated with this resource. See [Labelling and grouping GCP /// resources]() /// for more information. #[prost(map = "string, string", tag = "12")] pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// Network tags associated with this resource. Like labels, network tags are a /// type of annotations used to group GCP resources. See [Labelling GCP /// resources](l) /// for more information. #[prost(string, repeated, tag = "13")] pub network_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } /// The result for a IAM Policy search. #[derive(Clone, PartialEq, ::prost::Message)] pub struct IamPolicySearchResult { /// The [full resource /// name]() /// of the resource associated with this IAM policy. #[prost(string, tag = "1")] pub resource: ::prost::alloc::string::String, /// The project that the associated GCP resource belongs to, in the form of /// `projects/{project_number}`. If an IAM policy is set on a resource (like VM /// instance, Cloud Storage bucket), the project field will indicate the /// project that contains the resource. If an IAM policy is set on a folder or /// orgnization, the project field will be empty. #[prost(string, tag = "3")] pub project: ::prost::alloc::string::String, /// The IAM policy directly set on the given resource. Note that the original /// IAM policy can contain multiple bindings. This only contains the bindings /// that match the given query. For queries that don't contain a constrain on /// policies (e.g. an empty query), this contains all the bindings. #[prost(message, optional, tag = "4")] pub policy: ::core::option::Option, /// Explanation about the IAM policy search result. It contains additional /// information to explain why the search result matches the query. #[prost(message, optional, tag = "5")] pub explanation: ::core::option::Option, } /// Nested message and enum types in `IamPolicySearchResult`. pub mod iam_policy_search_result { /// Explanation about the IAM policy search result. #[derive(Clone, PartialEq, ::prost::Message)] pub struct Explanation { /// The map from roles to their included permission matching the permission /// query (e.g. containing `policy.role.permissions:`). A sample role string: /// "roles/compute.instanceAdmin". The roles can also be found in the /// returned `policy` bindings. Note that the map is populated only if /// requesting with a permission query. #[prost(map = "string, message", tag = "1")] pub matched_permissions: ::std::collections::HashMap<::prost::alloc::string::String, super::Permissions>, } } /// IAM permissions #[derive(Clone, PartialEq, ::prost::Message)] pub struct Permissions { /// A list of permissions. A sample permission string: "compute.disk.get". #[prost(string, repeated, tag = "1")] pub permissions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } /// Search all resources request. #[derive(Clone, PartialEq, ::prost::Message)] pub struct SearchAllResourcesRequest { /// Required. The relative name of an asset. The search is limited to the resources /// within the `scope`. The allowed value must be: /// * Organization number (such as "organizations/123") /// * Folder number(such as "folders/1234") /// * Project number (such as "projects/12345") /// * Project id (such as "projects/abc") #[prost(string, tag = "1")] pub scope: ::prost::alloc::string::String, /// Optional. The query statement. #[prost(string, tag = "2")] pub query: ::prost::alloc::string::String, /// Optional. A list of asset types that this request searches for. If empty, it will /// search all the supported asset types. #[prost(string, repeated, tag = "3")] pub asset_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// 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. #[prost(int32, tag = "4")] pub page_size: i32, /// 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. #[prost(string, tag = "5")] pub page_token: ::prost::alloc::string::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. For /// example, " foo , bar desc ". #[prost(string, tag = "10")] pub order_by: ::prost::alloc::string::String, } /// Search all resources response. #[derive(Clone, PartialEq, ::prost::Message)] pub struct SearchAllResourcesResponse { /// A list of resource that match the search query. #[prost(message, repeated, tag = "1")] pub results: ::prost::alloc::vec::Vec, /// 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`. #[prost(string, tag = "2")] pub next_page_token: ::prost::alloc::string::String, } /// Search all IAM policies request. #[derive(Clone, PartialEq, ::prost::Message)] pub struct SearchAllIamPoliciesRequest { /// Required. The relative name of an asset. The search is limited to the resources /// within the `scope`. The allowed value must be: /// * Organization number (such as "organizations/123") /// * Folder number(such as "folders/1234") /// * Project number (such as "projects/12345") /// * Project id (such as "projects/abc") #[prost(string, tag = "1")] pub scope: ::prost::alloc::string::String, /// Optional. The query statement. /// Examples: /// * "policy:myuser@mydomain.com" /// * "policy:(myuser@mydomain.com viewer)" #[prost(string, tag = "2")] pub query: ::prost::alloc::string::String, /// 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. #[prost(int32, tag = "3")] pub page_size: i32, /// 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. #[prost(string, tag = "4")] pub page_token: ::prost::alloc::string::String, } /// Search all IAM policies response. #[derive(Clone, PartialEq, ::prost::Message)] pub struct SearchAllIamPoliciesResponse { /// A list of IamPolicy that match the search query. Related information such /// as the associated resource is returned along with the policy. #[prost(message, repeated, tag = "1")] pub results: ::prost::alloc::vec::Vec, /// 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`. #[prost(string, tag = "2")] pub next_page_token: ::prost::alloc::string::String, } #[doc = r" Generated client implementations."] pub mod asset_service_client { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; #[doc = " Asset service definition."] #[derive(Debug, Clone)] pub struct AssetServiceClient { inner: tonic::client::Grpc, } impl AssetServiceClient where T: tonic::client::GrpcService, T::ResponseBody: Body + Send + 'static, T::Error: Into, ::Error: Into + Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); Self { inner } } pub fn with_interceptor( inner: T, interceptor: F, ) -> AssetServiceClient> where F: tonic::service::Interceptor, T: tonic::codegen::Service< http::Request, Response = http::Response< >::ResponseBody, >, >, >>::Error: Into + Send + Sync, { AssetServiceClient::new(InterceptedService::new(inner, interceptor)) } #[doc = r" Compress requests with `gzip`."] #[doc = r""] #[doc = r" This requires the server to support it otherwise it might respond with an"] #[doc = r" error."] pub fn send_gzip(mut self) -> Self { self.inner = self.inner.send_gzip(); self } #[doc = r" Enable decompressing responses with `gzip`."] pub fn accept_gzip(mut self) -> Self { self.inner = self.inner.accept_gzip(); self } #[doc = " Searches all the resources under a given accessible CRM scope"] #[doc = " (project/folder/organization). This RPC gives callers"] #[doc = " especially admins the ability to search all the resources under a scope,"] #[doc = " even if they don't have .get permission of all the resources. Callers"] #[doc = " should have cloud.assets.SearchAllResources permission on the requested"] #[doc = " scope, otherwise it will be rejected."] pub async fn search_all_resources( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.cloud.asset.v1p1beta1.AssetService/SearchAllResources", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Searches all the IAM policies under a given accessible CRM scope"] #[doc = " (project/folder/organization). This RPC gives callers"] #[doc = " especially admins the ability to search all the IAM policies under a scope,"] #[doc = " even if they don't have .getIamPolicy permission of all the IAM policies."] #[doc = " Callers should have cloud.assets.SearchAllIamPolicies permission on the"] #[doc = " requested scope, otherwise it will be rejected."] pub async fn search_all_iam_policies( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.cloud.asset.v1p1beta1.AssetService/SearchAllIamPolicies", ); self.inner.unary(request.into_request(), path, codec).await } } }