use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use super::enums::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum Source {
#[serde(rename = "http")]
Http {
url: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
headers: Option<HashMap<String, String>>,
},
#[serde(rename = "file")]
File {
base64_string: String,
filename: String,
},
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum Target {
#[serde(rename = "inbody")]
InBody,
#[serde(rename = "zip")]
Zip,
}
impl Default for Target {
fn default() -> Self {
Target::InBody
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConvertDocumentsRequestOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub from_formats: Option<Vec<InputFormat>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub to_formats: Option<Vec<OutputFormat>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_export_mode: Option<ImageRefMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_ocr: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub force_ocr: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ocr_engine: Option<OcrEngine>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ocr_lang: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pdf_backend: Option<PdfBackend>,
#[serde(skip_serializing_if = "Option::is_none")]
pub table_mode: Option<TableFormerMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub table_cell_matching: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pipeline: Option<ProcessingPipeline>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_range: Option<(i64, i64)>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_timeout: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub abort_on_error: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_table_structure: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_images: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub images_scale: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub md_page_break_placeholder: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_code_enrichment: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_formula_enrichment: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_picture_classification: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_chart_extraction: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub do_picture_description: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub picture_description_area_threshold: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vlm_pipeline_model: Option<VlmModelType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub picture_description_local: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub picture_description_api: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vlm_pipeline_model_local: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vlm_pipeline_model_api: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConvertDocumentsRequest {
pub sources: Vec<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<ConvertDocumentsRequestOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<Target>,
}