use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VaultSku {
#[serde(skip_serializing_if = "Option::is_none")]
pub family: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
impl VaultSku {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
family: Some("test-family".into()),
name: Some("test-vault_sku".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccessPolicyEntry {
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub object_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<AccessPermissions>,
}
impl AccessPolicyEntry {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tenant_id: Some("test-tenant_id".into()),
object_id: Some("test-object_id".into()),
permissions: Some(AccessPermissions::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccessPermissions {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub keys: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub secrets: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub certificates: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub storage: Vec<String>,
}
impl AccessPermissions {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
keys: vec![],
secrets: vec![],
certificates: vec![],
storage: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IpRule {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
impl IpRule {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: Some("test-value".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VirtualNetworkRule {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_missing_vnet_service_endpoint: Option<bool>,
}
impl VirtualNetworkRule {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
ignore_missing_vnet_service_endpoint: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NetworkRuleSet {
#[serde(skip_serializing_if = "Option::is_none")]
pub bypass: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_action: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub ip_rules: Vec<IpRule>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub virtual_network_rules: Vec<VirtualNetworkRule>,
}
impl NetworkRuleSet {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
bypass: Some("test-bypass".into()),
default_action: Some("test-default_action".into()),
ip_rules: vec![],
virtual_network_rules: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VaultProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sku: Option<VaultSku>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub access_policies: Vec<AccessPolicyEntry>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vault_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled_for_deployment: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled_for_template_deployment: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_soft_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub soft_delete_retention_in_days: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_purge_protection: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_rbac_authorization: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_acls: Option<NetworkRuleSet>,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_network_access: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provisioning_state: Option<String>,
}
impl VaultProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tenant_id: Some("test-tenant_id".into()),
sku: Some(VaultSku::fixture()),
access_policies: vec![],
vault_uri: Some("test-vault_uri".into()),
enabled_for_deployment: Some(false),
enabled_for_template_deployment: Some(false),
enable_soft_delete: Some(false),
soft_delete_retention_in_days: Some(100),
enable_purge_protection: Some(false),
enable_rbac_authorization: Some(false),
network_acls: Some(NetworkRuleSet::fixture()),
public_network_access: Some("test-public_network_access".into()),
provisioning_state: Some("test-provisioning_state".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Vault {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<VaultProperties>,
}
impl Vault {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-vault".into()),
r#type: Some("test-type".into()),
location: Some("test-location".into()),
tags: Default::default(),
properties: Some(VaultProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VaultListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Vault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl VaultListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VaultCreateOrUpdateProperties {
pub tenant_id: String,
pub sku: VaultSku,
#[serde(default)]
pub access_policies: Vec<AccessPolicyEntry>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled_for_deployment: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_soft_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_purge_protection: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_rbac_authorization: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_acls: Option<NetworkRuleSet>,
}
impl VaultCreateOrUpdateProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tenant_id: "test-tenant_id".into(),
sku: VaultSku::fixture(),
access_policies: vec![],
enabled_for_deployment: Some(false),
enable_soft_delete: Some(false),
enable_purge_protection: Some(false),
enable_rbac_authorization: Some(false),
network_acls: Some(NetworkRuleSet::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VaultCreateRequest {
pub location: String,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
pub properties: VaultCreateOrUpdateProperties,
}
impl VaultCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
location: "test-location".into(),
tags: Default::default(),
properties: VaultCreateOrUpdateProperties::fixture(),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretAttributes {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nbf: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated: Option<i64>,
}
impl SecretAttributes {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
enabled: Some(false),
nbf: Some(100),
exp: Some(100),
created: Some(100),
updated: Some(100),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<SecretAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_uri_with_version: Option<String>,
}
impl SecretProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: Some("test-value".into()),
content_type: Some("test-content_type".into()),
attributes: Some(SecretAttributes::fixture()),
secret_uri: Some("test-secret_uri".into()),
secret_uri_with_version: Some("test-secret_uri_with_version".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Secret {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<SecretProperties>,
}
impl Secret {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-secret".into()),
r#type: Some("test-type".into()),
location: Some("test-location".into()),
tags: Default::default(),
properties: Some(SecretProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Secret>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecretListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretCreateOrUpdateProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<SecretAttributes>,
}
impl SecretCreateOrUpdateProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: Some("test-value".into()),
content_type: Some("test-content_type".into()),
attributes: Some(SecretAttributes::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretCreateRequest {
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
pub properties: SecretCreateOrUpdateProperties,
}
impl SecretCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tags: Default::default(),
properties: SecretCreateOrUpdateProperties::fixture(),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyAttributes {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nbf: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exportable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub recovery_level: Option<String>,
}
impl KeyAttributes {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
enabled: Some(false),
nbf: Some(100),
exp: Some(100),
created: Some(100),
updated: Some(100),
exportable: Some(false),
recovery_level: Some("test-recovery_level".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kty: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub key_ops: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub curve_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_uri_with_version: Option<String>,
}
impl KeyProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
attributes: Some(KeyAttributes::fixture()),
kty: Some("test-kty".into()),
key_ops: vec![],
key_size: Some(100),
curve_name: Some("test-curve_name".into()),
key_uri: Some("test-key_uri".into()),
key_uri_with_version: Some("test-key_uri_with_version".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Key {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<KeyProperties>,
}
impl Key {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-key".into()),
r#type: Some("test-type".into()),
location: Some("test-location".into()),
tags: Default::default(),
properties: Some(KeyProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Key>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl KeyListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyCreateProperties {
pub kty: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub curve_name: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub key_ops: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
}
impl KeyCreateProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
kty: "test-kty".into(),
key_size: Some(100),
curve_name: Some("test-curve_name".into()),
key_ops: vec![],
attributes: Some(KeyAttributes::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyCreateRequest {
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
pub properties: KeyCreateProperties,
}
impl KeyCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tags: Default::default(),
properties: KeyCreateProperties::fixture(),
}
}
}