paperless_api/metadata/
custom_field.rs1use serde::{Deserialize, Serialize};
4
5use paperless_api_macros::{CreateDto, Item, UpdateDto};
6
7use crate::id::{CustomFieldId, SelectableOptionId};
8
9#[derive(Debug, Clone, Deserialize, Serialize, CreateDto, UpdateDto, Item)]
11pub struct CustomField {
12 #[dto(skip)]
14 pub id: CustomFieldId,
15
16 pub name: String,
18
19 pub data_type: CustomFieldDataType,
21
22 pub extra_data: Option<CustomFieldExtraData>,
24
25 #[dto(skip)]
27 #[serde(default)]
28 pub document_count: u32,
29}
30
31#[derive(Debug, Clone, Deserialize, Serialize)]
33pub struct DocumentCustomField {
34 pub field: CustomFieldId,
36
37 pub value: String,
39}
40
41#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct CustomFieldExtraData {
44 pub default_currency: Option<String>,
46
47 pub select_options: Option<Vec<SelectableOption>>,
49}
50
51#[derive(Debug, Clone, Deserialize, Serialize)]
53pub struct SelectableOption {
54 pub id: SelectableOptionId,
56
57 pub label: String,
59}
60
61#[derive(Debug, Default, Clone, Deserialize, Serialize)]
63#[serde(rename_all = "lowercase")]
64pub enum CustomFieldDataType {
65 #[default]
66 String,
67 Url,
68 Date,
69 Boolean,
70 Integer,
71 Float,
72 Monetary,
73 Documentlink,
74 Select,
75 Longtext,
76}