use serde::Deserialize;
use super::{JsonObject, OrganizationPublic};
#[derive(Debug, Clone, Default)]
pub struct AnchorDocumentParams {
pub document_hash: String,
pub document_ref: Option<String>,
pub event_type: Option<String>,
pub original_bytes_b64: Option<String>,
pub metadata: Option<JsonObject>,
pub idempotency_key: Option<String>,
pub trace_id: Option<String>,
}
#[derive(Debug, Clone)]
pub enum FileSource {
Path(std::path::PathBuf),
Bytes(Vec<u8>),
}
#[derive(Debug, Clone)]
pub struct AnchorFileParams {
pub file: FileSource,
pub document_ref: Option<String>,
pub event_type: Option<String>,
pub metadata: Option<JsonObject>,
pub idempotency_key: Option<String>,
pub skip_original: bool,
pub trace_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AnchorDocumentResponse {
pub event_id: String,
pub created_at: String,
pub document_hash: String,
pub status: String,
}
#[derive(Debug, Clone, Default)]
pub struct ListDocumentsParams {
pub page: Option<u32>,
pub limit: Option<u32>,
pub date_from: Option<String>,
pub date_to: Option<String>,
pub document_ref: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct DocumentListItem {
pub event_id: String,
pub document_ref: String,
pub document_hash: String,
pub event_type: String,
pub has_original: bool,
pub created_at: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ListDocumentsResponse {
pub documents: Vec<DocumentListItem>,
pub page: u32,
pub limit: u32,
pub total: u64,
pub has_more: bool,
}
#[derive(Debug, Clone, Deserialize)]
pub struct DocumentEvent {
pub event_id: String,
pub tenant_id: String,
pub document_ref: String,
pub document_hash: String,
pub signature_b64: String,
pub signed_payload_b64: String,
pub public_key_b64: String,
pub has_original: bool,
#[serde(default)]
pub metadata: Option<JsonObject>,
pub created_at: String,
#[serde(default)]
pub organization: Option<OrganizationPublic>,
}
#[derive(Debug, Clone, Default)]
pub struct VerifyDocumentParams {
pub document_hash: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct VerifyDocumentResponse {
pub event_id: String,
pub match_result: bool,
pub document_ref: String,
pub anchored_hash: String,
pub submitted_hash: String,
pub anchored_at: String,
#[serde(default)]
pub organization: Option<OrganizationPublic>,
}