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, Default, 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)]
43pub struct CustomFieldExtraData {
44 pub default_currency: Option<String>,
45 pub select_options: Option<Vec<SelectableOption>>,
46}
47
48#[derive(Debug, Clone, Deserialize, Serialize)]
49pub struct SelectableOption {
50 pub id: SelectableOptionId,
51 pub label: String,
52}
53
54#[derive(Debug, Default, Clone, Deserialize, Serialize)]
55#[serde(rename_all = "lowercase")]
56pub enum CustomFieldDataType {
57 #[default]
58 String,
59 Url,
60 Date,
61 Boolean,
62 Integer,
63 Float,
64 Monetary,
65 Documentlink,
66 Select,
67 Longtext,
68}