1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349
// This file is @generated by prost-build.
/// 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](<https://cloud.google.com/apis/design/resource_names#full_resource_name>)
/// 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 Google
/// Cloud
/// resources](<https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources>)
/// for more information.
#[prost(btree_map = "string, string", tag = "12")]
pub labels: ::prost::alloc::collections::BTreeMap<
::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 Google Cloud resources. See [Labelling
/// Google Cloud
/// resources](l<https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources>)
/// for more information.
#[prost(string, repeated, tag = "13")]
pub network_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// The result for an IAM policy search.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IamPolicySearchResult {
/// The
/// [full resource
/// name](<https://cloud.google.com/apis/design/resource_names#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 Google Cloud resource belongs to, in the
/// form of `projects/{project_number}`. If an IAM policy is set on a resource
/// -- such as a Compute Engine instance or a 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 attached to the specified 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 constraint on
/// policies (e.g. an empty query), this contains all the bindings.
#[prost(message, optional, tag = "4")]
pub policy: ::core::option::Option<super::super::super::iam::v1::Policy>,
/// Explanation about the IAM policy search result. It contains additional
/// information that explains why the search result matches the query.
#[prost(message, optional, tag = "5")]
pub explanation: ::core::option::Option<iam_policy_search_result::Explanation>,
}
/// 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:`). Example 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(btree_map = "string, message", tag = "1")]
pub matched_permissions: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
super::Permissions,
>,
}
}
/// IAM permissions.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Permissions {
/// A list of permissions. Example 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, ` location DESC , name `.
#[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<StandardResourceMetadata>,
/// 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 IAM policies 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<IamPolicySearchResult>,
/// 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,
}
/// Generated client implementations.
pub mod asset_service_client {
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
use tonic::codegen::*;
use tonic::codegen::http::Uri;
/// Asset service definition.
#[derive(Debug, Clone)]
pub struct AssetServiceClient<T> {
inner: tonic::client::Grpc<T>,
}
impl<T> AssetServiceClient<T>
where
T: tonic::client::GrpcService<tonic::body::BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
{
pub fn new(inner: T) -> Self {
let inner = tonic::client::Grpc::new(inner);
Self { inner }
}
pub fn with_origin(inner: T, origin: Uri) -> Self {
let inner = tonic::client::Grpc::with_origin(inner, origin);
Self { inner }
}
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> AssetServiceClient<InterceptedService<T, F>>
where
F: tonic::service::Interceptor,
T::ResponseBody: Default,
T: tonic::codegen::Service<
http::Request<tonic::body::BoxBody>,
Response = http::Response<
<T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
>,
>,
<T as tonic::codegen::Service<
http::Request<tonic::body::BoxBody>,
>>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
{
AssetServiceClient::new(InterceptedService::new(inner, interceptor))
}
/// Compress requests with the given encoding.
///
/// This requires the server to support it otherwise it might respond with an
/// error.
#[must_use]
pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.inner = self.inner.send_compressed(encoding);
self
}
/// Enable decompressing responses.
#[must_use]
pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.inner = self.inner.accept_compressed(encoding);
self
}
/// Limits the maximum size of a decoded message.
///
/// Default: `4MB`
#[must_use]
pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
self.inner = self.inner.max_decoding_message_size(limit);
self
}
/// Limits the maximum size of an encoded message.
///
/// Default: `usize::MAX`
#[must_use]
pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
self.inner = self.inner.max_encoding_message_size(limit);
self
}
/// Searches all the resources within a given accessible Resource Manager scope
/// (project/folder/organization). This RPC gives callers especially
/// administrators the ability to search all the resources within a scope, even
/// if they don't have `.get` permission of all the resources. Callers should
/// have `cloudasset.assets.searchAllResources` permission on the requested
/// scope, otherwise the request will be rejected.
pub async fn search_all_resources(
&mut self,
request: impl tonic::IntoRequest<super::SearchAllResourcesRequest>,
) -> std::result::Result<
tonic::Response<super::SearchAllResourcesResponse>,
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",
);
let mut req = request.into_request();
req.extensions_mut()
.insert(
GrpcMethod::new(
"google.cloud.asset.v1p1beta1.AssetService",
"SearchAllResources",
),
);
self.inner.unary(req, path, codec).await
}
/// Searches all the IAM policies within a given accessible Resource Manager
/// scope (project/folder/organization). This RPC gives callers especially
/// administrators the ability to search all the IAM policies within a scope,
/// even if they don't have `.getIamPolicy` permission of all the IAM policies.
/// Callers should have `cloudasset.assets.searchAllIamPolicies` permission on
/// the requested scope, otherwise the request will be rejected.
pub async fn search_all_iam_policies(
&mut self,
request: impl tonic::IntoRequest<super::SearchAllIamPoliciesRequest>,
) -> std::result::Result<
tonic::Response<super::SearchAllIamPoliciesResponse>,
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",
);
let mut req = request.into_request();
req.extensions_mut()
.insert(
GrpcMethod::new(
"google.cloud.asset.v1p1beta1.AssetService",
"SearchAllIamPolicies",
),
);
self.inner.unary(req, path, codec).await
}
}
}