use schemars::JsonSchema;
use serde::Deserialize;
use super::enums::*;
fn default_chart_width() -> u32 {
480
}
fn default_chart_height() -> u32 {
288
}
fn default_comma() -> String {
",".to_string()
}
fn default_true() -> bool {
true
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct CreateWorkbookInput {}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct OpenWorkbookInput {
pub file_path: String,
#[serde(default)]
pub read_only: bool,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SaveWorkbookInput {
pub workbook_id: String,
pub file_path: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct CloseWorkbookInput {
pub workbook_id: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ReadSheetInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: Option<String>,
pub continuation_token: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ReadCellInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct CellWrite {
pub cell: String,
pub value: serde_json::Value,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteCellsInput {
pub workbook_id: String,
pub sheet_name: String,
pub cells: Vec<CellWrite>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteRowInput {
pub workbook_id: String,
pub sheet_name: String,
pub start_cell: String,
pub values: Vec<serde_json::Value>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteColumnInput {
pub workbook_id: String,
pub sheet_name: String,
pub start_cell: String,
pub values: Vec<serde_json::Value>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetCellFormatInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub italic: Option<bool>,
#[serde(default)]
pub underline: Option<bool>,
#[serde(default)]
pub font_size: Option<f64>,
#[serde(default)]
pub font_color: Option<String>,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
#[serde(default)]
pub horizontal_alignment: Option<HorizontalAlignment>,
#[serde(default)]
pub vertical_alignment: Option<VerticalAlignment>,
#[serde(default)]
pub border_style: Option<BorderStyle>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct MergeCellsInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddChartInput {
pub workbook_id: String,
pub sheet_name: String,
pub chart_type: ChartType,
pub data_range: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub x_axis_label: Option<String>,
#[serde(default)]
pub y_axis_label: Option<String>,
#[serde(default)]
pub legend_position: Option<LegendPosition>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddImageInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub image_path: String,
#[serde(default)]
pub width: Option<u32>,
#[serde(default)]
pub height: Option<u32>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddTableInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
pub columns: Vec<String>,
#[serde(default)]
pub style: Option<String>,
#[serde(default)]
pub totals_row: bool,
#[serde(default = "default_true")]
pub autofilter: bool,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddConditionalFormatInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
pub rule: ConditionalFormatRule,
#[serde(default)]
pub format: Option<ConditionalFormatStyle>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddDataValidationInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
pub validation: ValidationRule,
#[serde(default)]
pub input_message: Option<ValidationMessage>,
#[serde(default)]
pub error_alert: Option<ValidationAlert>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetColumnWidthInput {
pub workbook_id: String,
pub sheet_name: String,
pub column: String,
pub width: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetRowHeightInput {
pub workbook_id: String,
pub sheet_name: String,
pub row: u32,
pub height: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct FreezePanesInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddSparklineInput {
pub workbook_id: String,
pub sheet_name: String,
pub target_cell: String,
pub data_range: String,
pub sparkline_type: SparklineType,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SearchCellsInput {
pub workbook_id: String,
#[serde(default)]
pub sheet_name: Option<String>,
pub query: String,
#[serde(default)]
pub match_mode: MatchMode,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SheetToCsvInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default = "default_comma")]
pub delimiter: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddSheetInput {
pub workbook_id: String,
pub sheet_name: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct RenameSheetInput {
pub workbook_id: String,
pub current_name: String,
pub new_name: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct DeleteSheetInput {
pub workbook_id: String,
pub sheet_name: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ListSheetsInput {
pub workbook_id: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct GetSheetDimensionsInput {
pub workbook_id: String,
pub sheet_name: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct DescribeWorkbookInput {
pub workbook_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct PageMargins {
#[serde(default)]
pub top: Option<f64>,
#[serde(default)]
pub bottom: Option<f64>,
#[serde(default)]
pub left: Option<f64>,
#[serde(default)]
pub right: Option<f64>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FitToPages {
pub width: u16,
pub height: u16,
}
#[derive(Deserialize, JsonSchema)]
pub struct RepeatRows {
pub first: u32,
pub last: u32,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetPageSetupInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub landscape: Option<bool>,
#[serde(default)]
pub paper_size: Option<u8>,
#[serde(default)]
pub margins: Option<PageMargins>,
#[serde(default)]
pub fit_to_pages: Option<FitToPages>,
#[serde(default)]
pub print_scale: Option<u16>,
#[serde(default)]
pub print_area: Option<String>,
#[serde(default)]
pub repeat_rows: Option<RepeatRows>,
#[serde(default)]
pub header: Option<String>,
#[serde(default)]
pub footer: Option<String>,
#[serde(default)]
pub print_gridlines: Option<bool>,
#[serde(default)]
pub center_horizontally: Option<bool>,
#[serde(default)]
pub center_vertically: Option<bool>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddCommentInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub text: String,
#[serde(default)]
pub author: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddHyperlinkInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub url: String,
#[serde(default)]
pub tooltip: Option<String>,
#[serde(default)]
pub display_text: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddDefinedNameInput {
pub workbook_id: String,
pub name: String,
pub formula: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ListDefinedNamesInput {
pub workbook_id: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetSheetSettingsInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub hidden: Option<bool>,
#[serde(default)]
pub very_hidden: Option<bool>,
#[serde(default)]
pub zoom: Option<u16>,
#[serde(default)]
pub hide_gridlines: Option<bool>,
#[serde(default)]
pub hide_headings: Option<bool>,
#[serde(default)]
pub tab_color: Option<String>,
#[serde(default)]
pub right_to_left: Option<bool>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetActiveSheetInput {
pub workbook_id: String,
pub sheet_index: usize,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct InsertDeleteRowsInput {
pub workbook_id: String,
pub sheet_name: String,
pub at_row: u32,
pub count: u32,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct InsertDeleteColumnsInput {
pub workbook_id: String,
pub sheet_name: String,
pub at_column: String,
pub count: u16,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct GroupRowsInput {
pub workbook_id: String,
pub sheet_name: String,
pub start: u32,
pub end: u32,
#[serde(default = "default_level")]
pub level: u8,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct GroupColumnsInput {
pub workbook_id: String,
pub sheet_name: String,
pub start: String,
pub end: String,
#[serde(default = "default_level")]
pub level: u8,
}
fn default_level() -> u8 {
1
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ProtectSheetInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub password: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ProtectWorkbookInput {
pub workbook_id: String,
#[serde(default)]
pub password: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AutofitColumnsInput {
pub workbook_id: String,
pub sheet_name: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ChartSeriesInput {
pub values: String,
#[serde(default)]
pub categories: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub color: Option<String>,
#[serde(default)]
pub data_labels: Option<bool>,
#[serde(default)]
pub trendline: Option<String>,
#[serde(default)]
pub marker: Option<String>,
#[serde(default)]
pub secondary_axis: Option<bool>,
}
#[derive(Deserialize, JsonSchema)]
pub struct PivotChartSourceInput {
pub pivot_table: String,
pub sheet: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddChartEnhancedInput {
pub workbook_id: String,
pub sheet_name: String,
pub chart_type: ChartType,
#[serde(default)]
pub series: Vec<ChartSeriesInput>,
#[serde(default)]
pub data_range: Option<String>,
#[serde(default)]
pub cell: Option<String>,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub x_axis_label: Option<String>,
#[serde(default)]
pub y_axis_label: Option<String>,
#[serde(default)]
pub legend_position: Option<LegendPosition>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub pivot_source: Option<PivotChartSourceInput>,
}
#[derive(Deserialize, JsonSchema)]
pub struct PivotValueFieldInput {
pub field: String,
#[serde(default = "default_sum")]
pub aggregation: String,
}
fn default_sum() -> String {
"sum".to_string()
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddPivotTableInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub cell: Option<String>,
pub name: String,
pub source_range: String,
#[serde(default)]
pub row_fields: Vec<String>,
#[serde(default)]
pub column_fields: Vec<String>,
pub value_fields: Vec<PivotValueFieldInput>,
#[serde(default)]
pub filter_fields: Vec<String>,
#[serde(default)]
pub style: Option<String>,
#[serde(default)]
pub layout: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ReadCommentsInput {
pub workbook_id: String,
pub sheet_name: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct RichTextRunInput {
pub text: String,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub italic: Option<bool>,
#[serde(default)]
pub color: Option<String>,
#[serde(default)]
pub font_size: Option<f64>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteRichTextInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub runs: Vec<RichTextRunInput>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetColumnFormatInput {
pub workbook_id: String,
pub sheet_name: String,
pub column: String,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub italic: Option<bool>,
#[serde(default)]
pub font_size: Option<f64>,
#[serde(default)]
pub font_color: Option<String>,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetRowFormatInput {
pub workbook_id: String,
pub sheet_name: String,
pub row: u32,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub italic: Option<bool>,
#[serde(default)]
pub font_size: Option<f64>,
#[serde(default)]
pub font_color: Option<String>,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetColumnHiddenInput {
pub workbook_id: String,
pub sheet_name: String,
pub column: String,
#[serde(default)]
pub hidden: bool,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetRowHiddenInput {
pub workbook_id: String,
pub sheet_name: String,
pub row: u32,
#[serde(default)]
pub hidden: bool,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetColumnRangeWidthInput {
pub workbook_id: String,
pub sheet_name: String,
pub first_column: String,
pub last_column: String,
pub width: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetDefaultRowHeightInput {
pub workbook_id: String,
pub sheet_name: String,
pub height: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetSelectionInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetAutofilterInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct FilterColumnInput {
pub workbook_id: String,
pub sheet_name: String,
pub column: String,
pub values: Vec<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct IgnoreErrorInput {
pub workbook_id: String,
pub sheet_name: String,
pub error_type: String,
pub range: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetPageBreaksInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub row_breaks: Vec<u32>,
#[serde(default)]
pub col_breaks: Vec<u16>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct UnprotectRangeInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
pub title: String,
#[serde(default)]
pub password: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteFormulaInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub formula: String,
#[serde(default)]
pub cached_result: Option<f64>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteArrayFormulaInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
pub formula: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteDynamicFormulaInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub formula: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteBlankInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ClearCellInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetCalcModeInput {
pub workbook_id: String,
pub mode: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetPropertiesInput {
pub workbook_id: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub author: Option<String>,
#[serde(default)]
pub subject: Option<String>,
#[serde(default)]
pub company: Option<String>,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct MoveWorksheetInput {
pub workbook_id: String,
pub sheet_name: String,
pub to_index: usize,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteInternalLinkInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub location: String,
pub display_text: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ConfigureWorkbookInput {
pub workbook_id: String,
#[serde(default)]
pub calc_mode: Option<String>,
#[serde(default)]
pub active_sheet: Option<usize>,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub author: Option<String>,
#[serde(default)]
pub subject: Option<String>,
#[serde(default)]
pub company: Option<String>,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ModifyRowsInput {
pub workbook_id: String,
pub sheet_name: String,
pub action: String,
pub at_row: u32,
pub count: u32,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ModifyColumnsInput {
pub workbook_id: String,
pub sheet_name: String,
pub action: String,
pub at_column: String,
pub count: u16,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WriteFormulaConsolidatedInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub formula: String,
#[serde(default)]
pub formula_type: Option<String>,
#[serde(default)]
pub cached_result: Option<f64>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ManageCellInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub action: String,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ManageCommentsInput {
pub workbook_id: String,
pub sheet_name: String,
pub action: String,
#[serde(default)]
pub cell: Option<String>,
#[serde(default)]
pub text: Option<String>,
#[serde(default)]
pub author: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ManageDefinedNamesInput {
pub workbook_id: String,
pub action: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub formula: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddLinkInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
#[serde(default = "default_url")]
pub link_type: String,
pub target: String,
#[serde(default)]
pub display_text: Option<String>,
#[serde(default)]
pub tooltip: Option<String>,
}
fn default_url() -> String {
"url".to_string()
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ProtectInput {
pub workbook_id: String,
pub target: String,
#[serde(default)]
pub sheet_name: Option<String>,
#[serde(default)]
pub password: Option<String>,
#[serde(default)]
pub range: Option<String>,
#[serde(default)]
pub range_title: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetDimensionsInput {
pub workbook_id: String,
pub sheet_name: String,
pub target: String,
#[serde(default)]
pub column: Option<String>,
#[serde(default)]
pub first_column: Option<String>,
#[serde(default)]
pub last_column: Option<String>,
#[serde(default)]
pub row: Option<u32>,
pub value: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetVisibilityInput {
pub workbook_id: String,
pub sheet_name: String,
pub target: String,
pub identifier: String,
pub hidden: bool,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetRowColumnFormatInput {
pub workbook_id: String,
pub sheet_name: String,
pub target: String,
pub identifier: String,
#[serde(default)]
pub bold: Option<bool>,
#[serde(default)]
pub italic: Option<bool>,
#[serde(default)]
pub font_size: Option<f64>,
#[serde(default)]
pub font_color: Option<String>,
#[serde(default)]
pub background_color: Option<String>,
#[serde(default)]
pub number_format: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct GroupInput {
pub workbook_id: String,
pub sheet_name: String,
pub target: String,
pub start: String,
pub end: String,
#[serde(default = "default_level")]
pub level: u8,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ManageAutofilterInput {
pub workbook_id: String,
pub sheet_name: String,
pub range: String,
#[serde(default)]
pub filter_column: Option<String>,
#[serde(default)]
pub filter_values: Option<Vec<String>>,
}
#[derive(Deserialize, JsonSchema)]
pub struct WaterfallPoint {
pub category: String,
pub value: f64,
pub point_type: WaterfallPointKind,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddWaterfallChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<WaterfallPoint>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FunnelPoint {
pub category: String,
pub value: f64,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddFunnelChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<FunnelPoint>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct TreemapPoint {
pub category: String,
pub value: f64,
#[serde(default)]
pub color: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddTreemapChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<TreemapPoint>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddShapeInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub shape_type: ShapeKind,
pub width: u32,
pub height: u32,
#[serde(default)]
pub text: Option<String>,
#[serde(default)]
pub fill_color: Option<String>,
#[serde(default)]
pub outline_color: Option<String>,
#[serde(default)]
pub outline_width: Option<f64>,
#[serde(default)]
pub font_size: Option<f64>,
#[serde(default)]
pub bold: Option<bool>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SetDocPropertiesInput {
pub workbook_id: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub author: Option<String>,
#[serde(default)]
pub subject: Option<String>,
#[serde(default)]
pub description: Option<String>,
#[serde(default)]
pub keywords: Option<String>,
#[serde(default)]
pub category: Option<String>,
#[serde(default)]
pub company: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddSunburstChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<TreemapPoint>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddHistogramChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<FunnelPoint>,
#[serde(default)]
pub bin_count: Option<u32>,
#[serde(default)]
pub bin_width: Option<f64>,
#[serde(default)]
pub pareto: Option<bool>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddBoxWhiskerChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<FunnelPoint>,
#[serde(default)]
pub show_outliers: Option<bool>,
#[serde(default)]
pub show_mean: Option<bool>,
#[serde(default)]
pub show_inner_points: Option<bool>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddMapChartInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub series_name: Option<String>,
pub points: Vec<FunnelPoint>,
#[serde(default)]
pub map_level: Option<String>,
#[serde(default = "default_chart_width")]
pub width: u32,
#[serde(default = "default_chart_height")]
pub height: u32,
#[serde(default)]
pub cell: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddSlicerInput {
pub workbook_id: String,
pub sheet_name: String,
pub pivot_table_name: String,
pub field_name: String,
#[serde(default)]
pub cell: Option<String>,
#[serde(default)]
pub width: Option<u32>,
#[serde(default)]
pub height: Option<u32>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddTimelineInput {
pub workbook_id: String,
pub sheet_name: String,
pub pivot_table_name: String,
pub field_name: String,
#[serde(default)]
pub cell: Option<String>,
#[serde(default)]
pub width: Option<u32>,
#[serde(default)]
pub height: Option<u32>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddFormControlInput {
pub workbook_id: String,
pub sheet_name: String,
pub cell: String,
pub control_type: String,
#[serde(default)]
pub text: Option<String>,
#[serde(default)]
pub cell_link: Option<String>,
#[serde(default)]
pub input_range: Option<String>,
#[serde(default)]
pub width: Option<u32>,
#[serde(default)]
pub height: Option<u32>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SaveWorkbookAdvancedInput {
pub workbook_id: String,
pub file_path: String,
#[serde(default = "default_xlsx")]
pub format: String,
#[serde(default)]
pub password: Option<String>,
}
fn default_xlsx() -> String {
"xlsx".to_string()
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct OpenWorkbookEncryptedInput {
pub file_path: String,
pub password: String,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ManageNamedRangesInput {
pub workbook_id: String,
pub action: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub formula: Option<String>,
#[serde(default)]
pub sheet_index: Option<usize>,
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ReadSheetMetadataInput {
pub workbook_id: String,
pub sheet_name: String,
#[serde(default = "default_all")]
pub info: String,
}
fn default_all() -> String {
"all".to_string()
}
#[derive(Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AddChartSheetInput {
pub workbook_id: String,
pub sheet_name: String,
pub chart_type: ChartType,
#[serde(default)]
pub series: Vec<ChartSeriesInput>,
#[serde(default)]
pub data_range: Option<String>,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub x_axis_label: Option<String>,
#[serde(default)]
pub y_axis_label: Option<String>,
#[serde(default)]
pub legend_position: Option<LegendPosition>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ChartEnhancements {
#[serde(default)]
pub show_data_table: Option<bool>,
#[serde(default)]
pub view_3d: Option<View3DInput>,
#[serde(default)]
pub style: Option<u8>,
#[serde(default)]
pub alt_text: Option<AltTextInput>,
#[serde(default)]
pub y_axis_min: Option<f64>,
#[serde(default)]
pub y_axis_max: Option<f64>,
#[serde(default)]
pub y_axis_log_base: Option<f64>,
#[serde(default)]
pub x_axis_reverse: Option<bool>,
#[serde(default)]
pub y_axis_reverse: Option<bool>,
#[serde(default)]
pub x_axis_format: Option<String>,
#[serde(default)]
pub y_axis_format: Option<String>,
#[serde(default)]
pub drop_lines: Option<bool>,
#[serde(default)]
pub high_low_lines: Option<bool>,
#[serde(default)]
pub plot_area_fill: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct View3DInput {
#[serde(default)]
pub rot_x: Option<i16>,
#[serde(default)]
pub rot_y: Option<i16>,
#[serde(default)]
pub perspective: Option<u8>,
}
#[derive(Deserialize, JsonSchema)]
pub struct AltTextInput {
pub title: String,
pub description: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ChartSeriesEnhanced {
pub values: String,
#[serde(default)]
pub categories: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub color: Option<String>,
#[serde(default)]
pub data_labels: Option<bool>,
#[serde(default)]
pub trendline: Option<String>,
#[serde(default)]
pub marker: Option<String>,
#[serde(default)]
pub secondary_axis: Option<bool>,
#[serde(default)]
pub line_width: Option<f64>,
#[serde(default)]
pub dash_style: Option<String>,
#[serde(default)]
pub gradient: Option<Vec<GradientStopInput>>,
#[serde(default)]
pub bubble_sizes: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct GradientStopInput {
pub color: String,
pub position: f64,
}
#[derive(Deserialize, JsonSchema)]
pub struct SheetProtectionOptionsInput {
#[serde(default)]
pub password: Option<String>,
#[serde(default)]
pub insert_rows: Option<bool>,
#[serde(default)]
pub delete_rows: Option<bool>,
#[serde(default)]
pub insert_columns: Option<bool>,
#[serde(default)]
pub delete_columns: Option<bool>,
#[serde(default)]
pub format_cells: Option<bool>,
#[serde(default)]
pub format_columns: Option<bool>,
#[serde(default)]
pub format_rows: Option<bool>,
#[serde(default)]
pub sort: Option<bool>,
#[serde(default)]
pub insert_hyperlinks: Option<bool>,
#[serde(default)]
pub select_locked_cells: Option<bool>,
#[serde(default)]
pub select_unlocked_cells: Option<bool>,
#[serde(default)]
pub pivot_tables: Option<bool>,
}