librus-api 1.0.3

Login API for Librus Synergia
Documentation
use serde::Deserialize;

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Lesson {
    pub id: i32,
    pub teacher: LessonClass,
    pub subject: LessonClass,
    pub class: LessonClass,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct LessonClass {
    pub id: i32,
    pub url: String,
}

#[derive(Debug, Deserialize)]
pub struct LessonResources {
    #[serde(rename = "..")]
    pub root: LessonUrl,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct LessonUrl {
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseLesson {
    pub lesson: Lesson,
    pub resources: LessonResources,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct LessonSubject {
    pub id: i32,
    pub name: String,
    #[serde(rename = "No")]
    pub num: i32,
    pub short: String,
    pub is_extra_curricular: Option<bool>,
    pub is_block_lesson: Option<bool>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseLessonSubject {
    pub subject: Option<LessonSubject>,
    pub resources: LessonResources,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Attendance {
    pub id: AttendanceId,
    pub lesson: AttendanceAddedBy,
    pub student: AttendanceAddedBy,
    pub date: String,
    pub add_date: String,
    pub lesson_no: i32,
    pub semester: i32,
    #[serde(rename = "Type")]
    pub attendance_type: AttendanceAddedBy,
    pub added_by: AttendanceAddedBy,
    pub trip: Option<AttendanceAddedBy>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct AttendanceAddedBy {
    pub id: i32,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(untagged)]
pub enum AttendanceId {
    Integer(i32),
    String(String),
}

#[derive(Debug, Deserialize)]
pub struct AttendanceResources {
    #[serde(rename = "Attendances\\Types")]
    pub attendances_types: LessonUrl,
    #[serde(rename = "Attendances\\LessonsStatistics")]
    pub attendances_lessons_statistics: LessonUrl,
    #[serde(rename = "Attendances\\FilledByTeacher")]
    pub attendances_filled_by_teacher: LessonUrl,
    #[serde(rename = "..")]
    pub empty: LessonUrl,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseAttendances {
    pub attendances: Vec<Attendance>,
    pub resources: AttendanceResources,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct AttendanceType {
    pub id: i32,
    pub name: String,
    pub short: String,
    pub standard: bool,
    #[serde(rename = "ColorRGB")]
    pub color_rgb: Option<String>,
    pub is_presence_kind: bool,
    pub order: i32,
    pub identifier: String,
    pub standard_type: Option<AttendanceColor>,
    pub color: Option<AttendanceColor>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct AttendanceColor {
    pub id: i32,
    pub url: String,
}


#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseAttendancesType {
    pub types: Vec<AttendanceType>,
    pub resources: LessonResources,
    pub url: String,
}