paperless_api/
workflow.rs1use std::collections::HashMap;
4
5use serde::Deserialize;
6use serde_repr::{Deserialize_repr, Serialize_repr};
7
8use paperless_api_macros::UpdateDto;
9
10#[derive(Debug, Clone, Deserialize, UpdateDto)]
12pub struct Workflow {
13 #[dto(skip)]
15 pub id: crate::id::WorkflowId,
16
17 pub enabled: bool,
19
20 pub name: String,
22
23 pub order: Option<i32>,
25
26 #[dto(skip)] pub triggers: Vec<WorkflowTrigger>,
29
30 #[dto(skip)] pub actions: Vec<WorkflowAction>,
33}
34
35#[derive(Debug, Clone, Deserialize)]
37pub struct WorkflowTrigger {
38 pub id: crate::id::WorkflowTriggerId,
40
41 #[serde(rename = "type")]
43 pub trigger_type: WorkflowTriggerType,
44}
45
46#[derive(Debug, Clone, Deserialize)]
48pub struct WorkflowAction {
49 pub id: crate::id::WorkflowActionId,
51
52 #[serde(rename = "type")]
54 pub action_type: WorkflowActionType,
55
56 pub webhook: Option<WebhookAction>,
58}
59
60#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
62#[repr(u8)]
63pub enum WorkflowTriggerType {
64 ProcessingStarted = 1,
65 DocumentAdded = 2,
66 DocumentUpdated = 3,
67 Scheduled = 4,
68}
69
70#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
72#[repr(u8)]
73pub enum WorkflowActionType {
74 Assign = 1,
75 Remove = 2,
76 Email = 3,
77 Webhook = 4,
78}
79
80#[derive(Debug, Clone, Deserialize)]
82pub struct WebhookAction {
83 pub id: crate::id::WebhookActionId,
85
86 pub url: String,
88
89 pub use_params: bool,
91
92 pub as_json: bool,
94
95 pub include_document: bool,
97
98 pub body: Option<String>,
100
101 pub headers: Option<HashMap<String, String>>,
103
104 pub params: Option<HashMap<String, String>>,
106}