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)]
11#[api_info(endpoint = "custom_fields")]
12pub struct CustomField {
13 #[dto(skip)]
15 pub id: CustomFieldId,
16
17 pub name: String,
19
20 pub data_type: CustomFieldDataType,
22
23 pub extra_data: Option<CustomFieldExtraData>,
25
26 #[dto(skip)]
28 #[serde(default)]
29 pub document_count: u32,
30}
31
32#[derive(Debug, Clone, Deserialize, Serialize)]
34pub struct DocumentCustomField {
35 pub field: CustomFieldId,
37
38 pub value: String,
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
44pub struct CustomFieldExtraData {
45 pub default_currency: Option<String>,
47
48 pub select_options: Option<Vec<SelectableOption>>,
50}
51
52#[derive(Debug, Clone, Deserialize, Serialize)]
54pub struct SelectableOption {
55 pub id: SelectableOptionId,
57
58 pub label: String,
60}
61
62#[derive(Debug, Default, Clone, Deserialize, Serialize)]
64#[serde(rename_all = "lowercase")]
65pub enum CustomFieldDataType {
66 #[default]
67 String,
68 Url,
69 Date,
70 Boolean,
71 Integer,
72 Float,
73 Monetary,
74 Documentlink,
75 Select,
76 Longtext,
77}