use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use uuid::Uuid;
pub const JOIN_REQUEST_SUBMIT_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/submit/1.0";
pub const JOIN_REQUEST_SUBMIT_RECEIPT_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/submit-receipt/1.0";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestSubmitBody {
pub vp: JsonValue,
#[serde(default)]
pub registry_consent: bool,
#[serde(default)]
pub extensions: JsonValue,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestSubmitReceiptBody {
pub request_id: Uuid,
pub status: String,
}
pub const JOIN_REQUEST_ACCEPT_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/accept/1.0";
pub const JOIN_REQUEST_ACCEPT_RECEIPT_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/accept-receipt/1.0";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestAcceptBody {
pub request_id: Uuid,
pub vmc_id: String,
pub vc: JsonValue,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestAcceptReceiptBody {
pub request_id: Uuid,
pub status: String,
pub reciprocal_vc_id: String,
}
pub const JOIN_REQUEST_MANIFEST_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/manifest/1.0";
pub const JOIN_REQUEST_MANIFEST_RESPONSE_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/manifest-response/1.0";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct ManifestCriterion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub presentation_definition: JsonValue,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestManifestResponseBody {
pub community_did: String,
pub criteria: Vec<ManifestCriterion>,
}
pub const JOIN_REQUEST_STATUS_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/status/1.0";
pub const JOIN_REQUEST_STATUS_RESPONSE_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/join-requests/status-response/1.0";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestStatusBody {
pub request_id: Uuid,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct JoinRequestStatusResponseBody {
pub request_id: Uuid,
pub status: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub needs: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub presentation_definition: Option<JsonValue>,
}
pub const MEMBER_SELF_REMOVE_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/members/self-remove/1.0";
pub const MEMBER_SELF_REMOVE_RECEIPT_TYPE: &str =
"https://trusttasks.org/openvtc/vtc/members/self-remove-receipt/1.0";
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct SelfRemoveBody {
#[serde(default)]
pub disposition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct SelfRemoveReceiptBody {
pub did: String,
pub disposition: String,
pub removed: bool,
}