use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServiceAccount {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unique_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: 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 disabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oauth2_client_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
}
impl ServiceAccount {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-service_account".into(),
project_id: Some("test-project_id".into()),
unique_id: Some("test-unique_id".into()),
email: Some("test-email".into()),
display_name: Some("test-display_name".into()),
description: Some("test-description".into()),
disabled: Some(false),
oauth2_client_id: Some("test-oauth2_client_id".into()),
etag: Some("test-etag".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateServiceAccountRequest {
pub account_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_account: Option<ServiceAccount>,
}
impl CreateServiceAccountRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
account_id: "test-account_id".into(),
service_account: Some(ServiceAccount::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServiceAccountKey {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_origin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub private_key_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub private_key_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_key_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub valid_after_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub valid_before_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disabled: Option<bool>,
}
impl ServiceAccountKey {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-service_account_key".into(),
key_algorithm: Some("test-key_algorithm".into()),
key_origin: Some("test-key_origin".into()),
key_type: Some("test-key_type".into()),
private_key_data: Some("test-private_key_data".into()),
private_key_type: Some("test-private_key_type".into()),
public_key_data: Some("test-public_key_data".into()),
valid_after_time: Some("test-valid_after_time".into()),
valid_before_time: Some("test-valid_before_time".into()),
disabled: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateServiceAccountKeyRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub key_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub private_key_type: Option<String>,
}
impl CreateServiceAccountKeyRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
key_algorithm: Some("test-key_algorithm".into()),
private_key_type: Some("test-private_key_type".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListServiceAccountKeysResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub keys: Vec<ServiceAccountKey>,
}
impl ListServiceAccountKeysResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self { keys: vec![] }
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IamEmpty {}
impl IamEmpty {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListServiceAccountsResponse {
#[serde(default)]
pub accounts: Vec<ServiceAccount>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl ListServiceAccountsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
accounts: vec![],
next_page_token: None,
}
}
}