Skip to main content

vault_client_rs/types/
kv.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Deserialize, Clone)]
6#[non_exhaustive]
7pub struct KvReadResponse<T> {
8    pub data: T,
9    pub metadata: KvMetadata,
10}
11
12#[derive(Debug, Deserialize, Clone)]
13#[non_exhaustive]
14pub struct KvMetadata {
15    pub created_time: String,
16    pub custom_metadata: Option<HashMap<String, String>>,
17    #[serde(default)]
18    pub deletion_time: String,
19    #[serde(default)]
20    pub destroyed: bool,
21    pub version: u64,
22}
23
24#[derive(Debug, Deserialize, Clone)]
25#[non_exhaustive]
26pub struct KvFullMetadata {
27    pub cas_required: bool,
28    pub created_time: String,
29    pub current_version: u64,
30    pub custom_metadata: Option<HashMap<String, String>>,
31    #[serde(default)]
32    pub delete_version_after: String,
33    pub max_versions: u64,
34    pub oldest_version: u64,
35    pub updated_time: String,
36    #[serde(default)]
37    pub versions: HashMap<String, KvVersionMetadata>,
38}
39
40#[derive(Debug, Deserialize, Clone)]
41#[non_exhaustive]
42pub struct KvVersionMetadata {
43    pub created_time: String,
44    #[serde(default)]
45    pub deletion_time: String,
46    #[serde(default)]
47    pub destroyed: bool,
48}
49
50#[derive(Debug, Serialize, Default, Clone)]
51pub struct KvMetadataParams {
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub max_versions: Option<u64>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub cas_required: Option<bool>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub delete_version_after: Option<String>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub custom_metadata: Option<HashMap<String, String>>,
60}
61
62#[derive(Debug, Deserialize, Serialize, Clone, Default)]
63pub struct KvConfig {
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub cas_required: Option<bool>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub max_versions: Option<u64>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub delete_version_after: Option<String>,
70}
71
72#[derive(Debug, Deserialize)]
73pub(crate) struct ListResponse {
74    #[serde(default)]
75    pub keys: Vec<String>,
76}