Skip to main content

greentic_secrets_spec/
requirements.rs

1#[cfg(feature = "schema")]
2use schemars::JsonSchema;
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5#[cfg(feature = "serde")]
6type JsonValue = serde_json::Value;
7#[cfg(not(feature = "serde"))]
8type JsonValue = ();
9
10pub use greentic_types::secrets::{SecretFormat, SecretKey, SecretRequirement, SecretScope};
11
12/// Seed document containing entries to apply into a store.
13#[derive(Debug, Clone, PartialEq, Eq)]
14#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
15#[cfg_attr(feature = "schema", derive(JsonSchema))]
16pub struct SeedDoc {
17    pub entries: Vec<SeedEntry>,
18}
19
20/// Seed entry for a single secret URI.
21#[derive(Debug, Clone, PartialEq, Eq)]
22#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
23#[cfg_attr(feature = "schema", derive(JsonSchema))]
24pub struct SeedEntry {
25    pub uri: String,
26    pub format: SecretFormat,
27    pub value: SeedValue,
28    #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
29    pub description: Option<String>,
30}
31
32/// Seed value payloads.
33#[derive(Debug, Clone, PartialEq, Eq)]
34#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
35#[cfg_attr(feature = "serde", serde(tag = "type", rename_all = "snake_case"))]
36#[cfg_attr(feature = "schema", derive(JsonSchema))]
37pub enum SeedValue {
38    Text { text: String },
39    Json { json: JsonValue },
40    BytesB64 { bytes_b64: String },
41}