use serde::{Deserialize, Serialize};
use super::BootstrapRequest;
#[derive(Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct ProvisionIntegrationRequest {
pub request: BootstrapRequest,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assertion: Option<AssertionMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vc_validity_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "is_false")]
pub create_context: bool,
}
fn is_false(b: &bool) -> bool {
!b
}
#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub enum AssertionMode {
#[default]
#[serde(alias = "didSigned")]
DidSigned,
#[serde(alias = "pinnedOnly")]
PinnedOnly,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct ProvisionIntegrationResponse {
pub bundle: String,
pub digest: String,
pub summary: ProvisionSummary,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", deny_unknown_fields)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct ProvisionSummary {
pub client_did: String,
#[serde(default)]
pub admin_did: String,
#[serde(default)]
pub admin_rolled_over: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub integration_did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub template_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub template_kind: Option<String>,
#[serde(default)]
pub admin_template_name: Option<String>,
pub bundle_id_hex: String,
pub secret_count: usize,
pub output_count: usize,
#[serde(default)]
pub webvh_server_id: Option<String>,
#[serde(default)]
pub context_created: bool,
}