Skip to main content

canvas_lms_api/resources/
module.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4/// A Canvas course module (a collection of ordered content items).
5#[derive(Debug, Clone, Deserialize, Serialize)]
6pub struct Module {
7    pub id: u64,
8    pub course_id: Option<u64>,
9    pub name: Option<String>,
10    pub position: Option<u64>,
11    pub unlock_at: Option<DateTime<Utc>>,
12    pub require_sequential_progress: Option<bool>,
13    pub prerequisite_module_ids: Option<Vec<u64>>,
14    pub items_count: Option<u64>,
15    pub items_url: Option<String>,
16    pub state: Option<String>,
17    pub completed_at: Option<DateTime<Utc>>,
18    pub publish_final_grade: Option<bool>,
19    pub published: Option<bool>,
20}
21
22/// An individual item within a Canvas module.
23#[derive(Debug, Clone, Deserialize, Serialize)]
24pub struct ModuleItem {
25    pub id: u64,
26    pub module_id: Option<u64>,
27    pub position: Option<u64>,
28    pub title: Option<String>,
29    pub indent: Option<u64>,
30    #[serde(rename = "type")]
31    pub item_type: Option<String>,
32    pub content_id: Option<u64>,
33    pub html_url: Option<String>,
34    pub url: Option<String>,
35    pub page_url: Option<String>,
36    pub external_url: Option<String>,
37    pub completion_requirement: Option<CompletionRequirement>,
38    pub published: Option<bool>,
39}
40
41/// Completion requirement for a module item.
42#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct CompletionRequirement {
44    #[serde(rename = "type")]
45    pub requirement_type: Option<String>,
46    pub min_score: Option<f64>,
47    pub completed: Option<bool>,
48}