use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Asset {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub asset_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub ancestors: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource: Option<Resource>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iam_policy: Option<Policy>,
}
impl Asset {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: Some("test-asset".into()),
asset_type: Some("test-asset_type".into()),
update_time: Some("test-update_time".into()),
ancestors: vec![],
resource: Some(Resource::fixture()),
iam_policy: Some(Policy::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Resource {
#[serde(skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub discovery_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub discovery_document_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_url: Option<String>,
}
impl Resource {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
parent: Some("test-parent".into()),
data: Default::default(),
location: Some("test-location".into()),
version: Some("test-version".into()),
discovery_name: Some("test-discovery_name".into()),
discovery_document_uri: Some("test-discovery_document_uri".into()),
resource_url: Some("test-resource_url".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceSearchResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub asset_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub project: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub folders: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub organization: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub labels: HashMap<String, String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub network_tags: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_full_resource_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_asset_type: Option<String>,
}
impl ResourceSearchResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: Some("test-resource_search_result".into()),
asset_type: Some("test-asset_type".into()),
project: Some("test-project".into()),
folders: vec![],
organization: Some("test-organization".into()),
display_name: Some("test-display_name".into()),
description: Some("test-description".into()),
location: Some("test-location".into()),
labels: Default::default(),
network_tags: vec![],
state: Some("test-state".into()),
create_time: Some("test-create_time".into()),
update_time: Some("test-update_time".into()),
parent_full_resource_name: Some("test-parent_full_resource_name".into()),
parent_asset_type: Some("test-parent_asset_type".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListAssetsResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub assets: Vec<Asset>,
#[serde(skip_serializing_if = "Option::is_none")]
pub read_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl ListAssetsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
assets: vec![],
read_time: Some("test-read_time".into()),
next_page_token: Some("test-next_page_token".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SearchAllResourcesResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub results: Vec<ResourceSearchResult>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl SearchAllResourcesResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
results: vec![],
next_page_token: Some("test-next_page_token".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Policy {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub bindings: Vec<Binding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i32>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub audit_configs: Vec<AuditConfig>,
}
impl Policy {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
bindings: vec![],
etag: Some("test-etag".into()),
version: Some(100),
audit_configs: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Binding {
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub members: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition: Option<Expr>,
}
impl Binding {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
role: Some("test-role".into()),
members: vec![],
condition: Some(Expr::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Expr {
#[serde(skip_serializing_if = "Option::is_none")]
pub expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl Expr {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
expression: Some("test-expression".into()),
title: Some("test-title".into()),
description: Some("test-description".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub service: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub audit_log_configs: Vec<AuditLogConfig>,
}
impl AuditConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
service: Some("test-service".into()),
audit_log_configs: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditLogConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub log_type: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub exempted_members: Vec<String>,
}
impl AuditLogConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
log_type: Some("test-log_type".into()),
exempted_members: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IamPolicySearchResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub resource: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub asset_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub policy: Option<Policy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub project: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub folders: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub organization: Option<String>,
}
impl IamPolicySearchResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
resource: Some("test-resource".into()),
asset_type: Some("test-asset_type".into()),
policy: Some(Policy::fixture()),
project: Some("test-project".into()),
folders: vec![],
organization: Some("test-organization".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SearchAllIamPoliciesResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub results: Vec<IamPolicySearchResult>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl SearchAllIamPoliciesResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
results: vec![],
next_page_token: Some("test-next_page_token".into()),
}
}
}