paperless_api/
workflow.rs1use std::collections::HashMap;
4
5use serde::Deserialize;
6use serde_repr::{Deserialize_repr, Serialize_repr};
7
8use paperless_api_macros::{Item, UpdateDto};
9
10#[derive(Debug, Clone, Deserialize, Item, UpdateDto)]
12#[api_info(endpoint = "workflows")]
13pub struct Workflow {
14 #[dto(skip)]
16 pub id: crate::id::WorkflowId,
17
18 pub enabled: bool,
20
21 pub name: String,
23
24 pub order: Option<i32>,
26
27 #[dto(skip)] pub triggers: Vec<WorkflowTrigger>,
30
31 #[dto(skip)] pub actions: Vec<WorkflowAction>,
34}
35
36#[derive(Debug, Clone, Deserialize)]
38pub struct WorkflowTrigger {
39 pub id: crate::id::WorkflowTriggerId,
41
42 #[serde(rename = "type")]
44 pub trigger_type: WorkflowTriggerType,
45}
46
47#[derive(Debug, Clone, Deserialize)]
49pub struct WorkflowAction {
50 pub id: crate::id::WorkflowActionId,
52
53 #[serde(rename = "type")]
55 pub action_type: WorkflowActionType,
56
57 pub webhook: Option<WebhookAction>,
59}
60
61#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
63#[repr(u8)]
64pub enum WorkflowTriggerType {
65 ProcessingStarted = 1,
66 DocumentAdded = 2,
67 DocumentUpdated = 3,
68 Scheduled = 4,
69}
70
71#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
73#[repr(u8)]
74pub enum WorkflowActionType {
75 Assign = 1,
76 Remove = 2,
77 Email = 3,
78 Webhook = 4,
79}
80
81#[derive(Debug, Clone, Deserialize)]
83pub struct WebhookAction {
84 pub id: crate::id::WebhookActionId,
86
87 pub url: String,
89
90 pub use_params: bool,
92
93 pub as_json: bool,
95
96 pub include_document: bool,
98
99 pub body: Option<String>,
101
102 pub headers: Option<HashMap<String, String>>,
104
105 pub params: Option<HashMap<String, String>>,
107}