siera_agent/modules/
credential_definition.rs1use crate::error::Result;
2use async_trait::async_trait;
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Debug, Deserialize, Serialize, Default)]
8pub struct CredentialDefinitionCreateOptions {
9 pub schema_id: String,
11
12 pub tag: String,
15
16 pub support_revocation: bool,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
22 pub revocation_registry_size: Option<i32>,
23}
24
25#[derive(Debug, Deserialize, Serialize)]
27pub struct CredentialDefinitionCreateResponse {
28 #[serde(alias = "id")]
30 pub credential_definition_id: String,
31}
32
33#[derive(Debug, Serialize, Deserialize)]
36pub struct CredentialDefinitionGetByIdResponse {
37 pub credential_definition: CredentialDefinition,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
43pub struct CredentialDefinition {
44 pub ver: String,
46
47 pub id: String,
49
50 #[serde(alias = "schemaId")]
52 pub schema_id: String,
53
54 #[serde(rename = "type")]
56 pub type_field: String,
57
58 pub tag: String,
61
62 pub value: Value,
64}
65
66#[derive(Debug, Serialize, Deserialize)]
68pub struct CredentialDefinitionGetAllResponse {
69 pub credential_definition_ids: Vec<String>,
71}
72
73#[async_trait]
75pub trait CredentialDefinitionModule {
76 async fn create(
78 &self,
79 options: CredentialDefinitionCreateOptions,
80 ) -> Result<CredentialDefinitionCreateResponse>;
81
82 async fn get_by_id(&self, id: String) -> Result<CredentialDefinition>;
84
85 async fn get_all(&self) -> Result<CredentialDefinitionGetAllResponse>;
87}