assist 0.1.0

assist.org rust analysis
Documentation
use serde_derive::Deserialize;
use serde_derive::Serialize;
use serde_json::Value;

#[derive(Default, Deserialize, Serialize, Clone, Debug)]
pub struct Institutions {
    pub id: u32,
    pub names: Vec<Name>,
    pub code: String,
    #[serde(rename = "prefers2016LegacyReport")]
    pub prefers_legacy_report: bool,
    #[serde(rename = "isCommunityCollege")]
    pub is_cc: bool,
    pub category: u32,
    #[serde(rename = "termType")]
    pub term_type: u32,
    #[serde(rename = "beginId")]
    pub begin_id: u32,
    #[serde(rename = "termTypeAcademicYears")]
    pub term_type_academic_years: Vec<TermTuple>
}

#[derive(Default, Deserialize, Serialize, Clone, Debug)]
pub struct Institution {
    pub id: u32,
    pub code: String,
    #[serde(rename = "isCommunityCollege")]
    pub is_cc: bool,
    pub category: String,
    #[serde(rename = "termType")]
    pub term_type: String,
    pub names: Vec<Name>,
    #[serde(rename = "termTypeAcademicYears")]
    pub term_type_academic_years: Vec<TermHistory>,
    #[serde(rename = "beginId")]
    pub begin_id: u32,
    pub end_id: Option<u32>,
}

#[derive(Default, Deserialize, Serialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TermHistory {
    pub term_type: String,
    pub from_year: u32
}

#[derive(Default, Debug, Clone, Deserialize, Serialize)]
pub struct InstitutionCourseAgreement {
    pub receiving_institution: Institution,
    pub sending_institution: Institution,
    pub courses: Vec<Articulation>,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct Name {
    pub name: String,
    #[serde(rename = "fromYear")]
    pub from_year: Option<u32>,
    #[serde(rename = "hasDepartments")]
    pub has_departments: bool,
    #[serde(rename = "hideInList")]
    pub hide_in_list: bool,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct TermTuple {
    #[serde(rename = "termType")]
    pub term_type: u32,
    #[serde(rename = "fromYear")]
    pub from_year: u32,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct AcademicYear {
    #[serde(rename = "Id")]
    pub id: u32,
    #[serde(rename = "FallYear")]
    pub fall_year: u32,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct Agreement {
    #[serde(rename = "institutionParentId")]
    pub institution_parent_id: u32,
    #[serde(rename = "institutionName")]
    pub institution_name: String,
    pub code: String,
    #[serde(rename = "isCommunityCollege")]
    pub is_cc: bool,
    #[serde(rename = "sendingYearIds")]
    pub sending_year_ids: Vec<u32>,
    #[serde(rename = "receivingYearIds")]
    pub receiving_year_ids: Vec<u32>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AllPrefix {
    pub name: String,
    pub articulations: Vec<Articulation>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AllDepartment {
    pub name: String,
    pub articulations: Vec<Articulation>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AllMajor {
    pub template_cell_id: String,
    pub articulation: Articulation,
    pub receiving_attributes: Option<ReceivingAttributes>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Articulation {
    #[serde(rename = "type")]
    pub type_field: String,
    pub course: Option<Course>,
    #[serde(default)]
    pub visible_cross_listed_courses: Option<Vec<Course>>,
    #[serde(default)]
    pub course_attributes: Option<Vec<Value>>,
    pub sending_articulation: Option<SendingArticulation>,
    #[serde(default)]
    pub template_overrides: Option<Vec<Value>>,
    #[serde(default)]
    pub attributes: Option<Vec<Value>>,
    #[serde(default)]
    pub receiving_attributes: Option<Vec<Value>>,
    pub requirement: Option<Requirement>,
    #[serde(default)]
    pub requirement_attributes: Option<Vec<Value>>,
    pub series: Option<Series>,
    #[serde(default)]
    pub series_attributes: Option<Vec<Value>>,
    pub general_education_area: Option<GeneralEducationArea>,
    #[serde(default)]
    pub general_education_area_attributes: Option<Vec<Value>>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Course {
    #[serde(default)]
    pub id: String,
    #[serde(default)]
    pub position: i64,
    #[serde(default)]
    pub published_course_identifier_year_term_id: Option<i64>,
    #[serde(default)]
    pub denied_on: Option<String>,
    #[serde(default)]
    pub attributes: Option<Vec<Value>>,
    pub course_identifier_parent_id: i64,
    pub course_title: Option<String>,
    pub course_number: Option<String>,
    pub prefix: Option<String>,
    pub prefix_parent_id: Option<i64>,
    pub prefix_description: Option<String>,
    pub department_parent_id: Option<i64>,
    pub department: Option<String>,
    pub begin: Option<String>,
    pub end: Option<String>,
    pub min_units: Option<f32>,
    pub max_units: Option<f32>,
    pub pathways: Option<Value>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SendingArticulation {
    pub no_articulation_reason: Option<String>,
    pub denied_courses: Option<Vec<Course>>,
    #[serde(default)]
    pub items: Vec<Item>,
    pub course_group_conjunctions: Option<Vec<CourseGroupConjunction>>,
    #[serde(rename = "type")]
    pub type_field: String,
    pub attributes: Option<Vec<Value>>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Item {
    #[serde(default)]
    pub course_conjunction: String,
    #[serde(default)]
    pub items: Vec<Item2>,
    pub attributes: Option<Vec<Value>>,
    pub position: i64,
    #[serde(rename = "type")]
    pub type_field: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Item2 {
    pub visible_cross_listed_courses: Option<Vec<Course>>,
    pub requisites: Option<Vec<Value>>,
    pub attributes: Option<Vec<Attribute>>,
    pub course_identifier_parent_id: i64,
    pub course_title: Option<String>,
    pub course_number: Option<String>,
    pub prefix: Option<String>,
    pub prefix_parent_id: Option<i64>,
    pub prefix_description: Option<String>,
    pub department_parent_id: Option<i64>,
    pub department: Option<String>,
    pub begin: Option<String>,
    pub end: Option<String>,
    pub min_units: Option<f32>,
    pub max_units: Option<f32>,
    #[serde(default)]
    pub pathways: Option<Vec<Value>>,
    pub published_course_identifier_year_term_id: Option<i64>,
    pub position: i64,
    #[serde(rename = "type")]
    pub type_field: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Attribute {
    pub position: i64,
    pub content: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CourseGroupConjunction {
    pub id: String,
    pub sending_articulation_id: String,
    pub group_conjunction: String,
    pub sending_course_group_begin_position: i64,
    pub sending_course_group_end_position: i64,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Series {
    pub conjunction: String,
    pub name: String,
    pub courses: Vec<Course>,
    pub series_pathways: Option<Value>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Requirement {
    pub name: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GeneralEducationArea {
    pub code: String,
    pub name: String,
    pub courses: Vec<Value>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReceivingAttributes {
    #[serde(rename = "type")]
    pub type_field: String,
    #[serde(default)]
    pub course_attributes: Option<Vec<Value>>,
    pub attributes: Option<Vec<Value>>,
    #[serde(default)]
    pub requirement_attributes: Option<Vec<Value>>,
    #[serde(default)]
    pub series_attributes: Option<Vec<Value>>,
    #[serde(default)]
    pub series_course_attributes: Option<Vec<Value>>,
    #[serde(default)]
    pub general_education_area_attributes: Option<Vec<Value>>,
}