vault-client-rs 0.8.0

A Rust client for the HashiCorp Vault HTTP API
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Default, Clone)]
pub struct EntityCreateRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<HashMap<String, String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub policies: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub disabled: Option<bool>,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct Entity {
    pub id: String,
    pub name: String,
    pub metadata: Option<HashMap<String, String>>,
    #[serde(default)]
    pub policies: Vec<String>,
    pub disabled: bool,
    #[serde(default)]
    pub aliases: Vec<EntityAlias>,
    pub creation_time: String,
    pub last_update_time: String,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct EntityAlias {
    pub id: String,
    pub canonical_id: String,
    pub mount_accessor: String,
    pub mount_type: String,
    pub name: String,
    pub metadata: Option<HashMap<String, String>>,
}

#[derive(Debug, Serialize, Default, Clone)]
pub struct EntityAliasCreateRequest {
    pub name: String,
    pub canonical_id: String,
    pub mount_accessor: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<HashMap<String, String>>,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct EntityAliasResponse {
    pub id: String,
    pub canonical_id: String,
    pub mount_accessor: String,
    pub name: String,
}

#[derive(Debug, Serialize, Default, Clone)]
pub struct GroupCreateRequest {
    pub name: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub policies: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<HashMap<String, String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub member_entity_ids: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub member_group_ids: Option<Vec<String>>,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub group_type: Option<String>,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct Group {
    pub id: String,
    pub name: String,
    #[serde(default)]
    pub policies: Vec<String>,
    pub metadata: Option<HashMap<String, String>>,
    #[serde(default)]
    pub member_entity_ids: Vec<String>,
    #[serde(default)]
    pub member_group_ids: Vec<String>,
    #[serde(rename = "type")]
    pub group_type: String,
    pub creation_time: String,
    pub last_update_time: String,
    pub alias: Option<GroupAlias>,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct GroupAlias {
    pub id: String,
    pub canonical_id: String,
    pub mount_accessor: String,
    pub mount_type: String,
    pub name: String,
}

#[derive(Debug, Serialize, Default, Clone)]
pub struct GroupAliasCreateRequest {
    pub name: String,
    pub mount_accessor: String,
    pub canonical_id: String,
}

#[derive(Debug, Deserialize, Clone)]
#[non_exhaustive]
pub struct GroupAliasResponse {
    pub id: String,
    pub canonical_id: String,
    pub mount_accessor: String,
    pub name: String,
}