paperless_api/
workflow.rs1use std::collections::HashMap;
2
3use serde::Deserialize;
4use serde_repr::{Deserialize_repr, Serialize_repr};
5
6#[derive(Debug, Clone, Deserialize)]
8pub struct Workflow {
9 pub id: crate::id::WorkflowId,
11
12 pub enabled: bool,
14
15 pub name: String,
17
18 pub order: Option<i32>,
20
21 pub triggers: Vec<WorkflowTrigger>,
23
24 pub actions: Vec<WorkflowAction>,
26}
27
28#[derive(Debug, Clone, Deserialize)]
30pub struct WorkflowTrigger {
31 pub id: crate::id::WorkflowTriggerId,
32
33 #[serde(rename = "type")]
34 pub trigger_type: WorkflowTriggerType,
35}
36
37#[derive(Debug, Clone, Deserialize)]
39pub struct WorkflowAction {
40 pub id: crate::id::WorkflowActionId,
41
42 #[serde(rename = "type")]
43 pub action_type: WorkflowActionType,
44
45 pub webhook: Option<WebhookAction>,
46}
47
48#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
50#[repr(u8)]
51pub enum WorkflowTriggerType {
52 ProcessingStarted = 1,
53 DocumentAdded = 2,
54 DocumentUpdated = 3,
55 Scheduled = 4,
56}
57
58#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
60#[repr(u8)]
61pub enum WorkflowActionType {
62 Assign = 1,
63 Remove = 2,
64 Email = 3,
65 Webhook = 4,
66}
67
68#[derive(Debug, Clone, Deserialize)]
70pub struct WebhookAction {
71 pub id: crate::id::WebhookActionId,
72 pub url: String,
73
74 pub use_params: bool,
75 pub as_json: bool,
76 pub include_document: bool,
77
78 pub body: Option<String>,
79 pub headers: Option<HashMap<String, String>>,
80 pub params: Option<HashMap<String, String>>,
81}