box_open_sdk/models/schemas/
tasks.rs1use super::*;
4
5#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6pub struct Task {
7 #[serde(default, skip_serializing_if = "Option::is_none")]
8 pub id: Option<String>,
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub r#type: Option<TaskType>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub item: Option<FileMini>,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub due_at: Option<chrono::DateTime<chrono::Utc>>,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub action: Option<TaskAction>,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub message: Option<String>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub task_assignment_collection: Option<TaskAssignments>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub is_completed: Option<bool>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub created_by: Option<UserMini>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub completion_rule: Option<TaskCompletionRule>,
29}
30
31#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
32pub struct Tasks {
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub total_count: Option<i64>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub entries: Option<Vec<Task>>,
37}
38
39#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
40#[serde(transparent)]
41pub struct TaskAction(pub String);
42
43impl TaskAction {
44 pub const REVIEW: &'static str = "review";
45 pub const COMPLETE: &'static str = "complete";
46}
47
48#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
49#[serde(transparent)]
50pub struct TaskCompletionRule(pub String);
51
52impl TaskCompletionRule {
53 pub const ALL_ASSIGNEES: &'static str = "all_assignees";
54 pub const ANY_ASSIGNEE: &'static str = "any_assignee";
55}
56
57#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
58pub struct CreateTaskRequestItem {
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub id: Option<String>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub r#type: Option<AiCitationType>,
63}
64
65#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
66pub struct CreateTaskRequest {
67 pub item: CreateTaskRequestItem,
68 #[serde(default, skip_serializing_if = "Option::is_none")]
69 pub action: Option<TaskAction>,
70 #[serde(default, skip_serializing_if = "Option::is_none")]
71 pub message: Option<String>,
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub due_at: Option<chrono::DateTime<chrono::Utc>>,
74 #[serde(default, skip_serializing_if = "Option::is_none")]
75 pub completion_rule: Option<TaskCompletionRule>,
76}
77
78#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
79pub struct UpdateTaskRequest {
80 #[serde(default, skip_serializing_if = "Option::is_none")]
81 pub action: Option<TaskAction>,
82 #[serde(default, skip_serializing_if = "Option::is_none")]
83 pub message: Option<String>,
84 #[serde(default, skip_serializing_if = "Option::is_none")]
85 pub due_at: Option<chrono::DateTime<chrono::Utc>>,
86 #[serde(default, skip_serializing_if = "Option::is_none")]
87 pub completion_rule: Option<TaskCompletionRule>,
88}