use serde::{self, Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "courseid")]
pub r#courseid: Option<i64>,
#[serde(rename = "page")]
pub r#page: Option<i64>,
#[serde(rename = "perpage")]
pub r#perpage: Option<i64>,
#[serde(rename = "search")]
pub r#search: Option<String>,
#[serde(rename = "onlypublic")]
pub r#onlypublic: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsBadgesItemEndorsement {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "badgeid")]
pub r#badgeid: Option<i64>,
#[serde(rename = "issuername")]
pub r#issuername: Option<String>,
#[serde(rename = "issuerurl")]
pub r#issuerurl: Option<String>,
#[serde(rename = "issueremail")]
pub r#issueremail: Option<String>,
#[serde(rename = "claimid")]
pub r#claimid: Option<String>,
#[serde(rename = "claimcomment")]
pub r#claimcomment: Option<String>,
#[serde(rename = "dateissued")]
pub r#dateissued: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsBadgesItemAlignmentItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "badgeid")]
pub r#badgeid: Option<i64>,
#[serde(rename = "targetName")]
pub r#target_name: Option<String>,
#[serde(rename = "targetUrl")]
pub r#target_url: Option<String>,
#[serde(rename = "targetDescription")]
pub r#target_description: Option<String>,
#[serde(rename = "targetFramework")]
pub r#target_framework: Option<String>,
#[serde(rename = "targetCode")]
pub r#target_code: Option<String>,
}
pub type r#ReturnsBadgesItemAlignment = Vec<ReturnsBadgesItemAlignmentItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsBadgesItemRelatedbadgesItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "version")]
pub r#version: Option<String>,
#[serde(rename = "language")]
pub r#language: Option<String>,
#[serde(rename = "type")]
pub r#type: Option<i64>,
}
pub type r#ReturnsBadgesItemRelatedbadges = Vec<ReturnsBadgesItemRelatedbadgesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsBadgesItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "description")]
pub r#description: Option<String>,
#[serde(rename = "timecreated")]
pub r#timecreated: Option<i64>,
#[serde(rename = "timemodified")]
pub r#timemodified: Option<i64>,
#[serde(rename = "usercreated")]
pub r#usercreated: Option<i64>,
#[serde(rename = "usermodified")]
pub r#usermodified: Option<i64>,
#[serde(rename = "issuername")]
pub r#issuername: Option<String>,
#[serde(rename = "issuerurl")]
pub r#issuerurl: Option<String>,
#[serde(rename = "issuercontact")]
pub r#issuercontact: Option<String>,
#[serde(rename = "expiredate")]
pub r#expiredate: Option<i64>,
#[serde(rename = "expireperiod")]
pub r#expireperiod: Option<i64>,
#[serde(rename = "type")]
pub r#type: Option<i64>,
#[serde(rename = "courseid")]
pub r#courseid: Option<i64>,
#[serde(rename = "message")]
pub r#message: Option<String>,
#[serde(rename = "messagesubject")]
pub r#messagesubject: Option<String>,
#[serde(rename = "attachment")]
pub r#attachment: Option<i64>,
#[serde(rename = "notification")]
pub r#notification: Option<i64>,
#[serde(rename = "nextcron")]
pub r#nextcron: Option<i64>,
#[serde(rename = "status")]
pub r#status: Option<i64>,
#[serde(rename = "issuedid")]
pub r#issuedid: Option<i64>,
#[serde(rename = "uniquehash")]
pub r#uniquehash: Option<String>,
#[serde(rename = "dateissued")]
pub r#dateissued: Option<i64>,
#[serde(rename = "dateexpire")]
pub r#dateexpire: Option<i64>,
#[serde(rename = "visible")]
pub r#visible: Option<i64>,
#[serde(rename = "email")]
pub r#email: Option<String>,
#[serde(rename = "version")]
pub r#version: Option<String>,
#[serde(rename = "language")]
pub r#language: Option<String>,
#[serde(rename = "imageauthorname")]
pub r#imageauthorname: Option<String>,
#[serde(rename = "imageauthoremail")]
pub r#imageauthoremail: Option<String>,
#[serde(rename = "imageauthorurl")]
pub r#imageauthorurl: Option<String>,
#[serde(rename = "imagecaption")]
pub r#imagecaption: Option<String>,
#[serde(rename = "badgeurl")]
pub r#badgeurl: Option<String>,
#[serde(rename = "endorsement")]
pub r#endorsement: Option<ReturnsBadgesItemEndorsement>,
#[serde(rename = "alignment")]
pub r#alignment: Option<r#ReturnsBadgesItemAlignment>,
#[serde(rename = "relatedbadges")]
pub r#relatedbadges: Option<r#ReturnsBadgesItemRelatedbadges>,
}
pub type r#ReturnsBadges = Vec<ReturnsBadgesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsWarningsItem {
#[serde(rename = "item")]
pub r#item: Option<String>,
#[serde(rename = "itemid")]
pub r#itemid: Option<i64>,
#[serde(rename = "warningcode")]
pub r#warningcode: Option<String>,
#[serde(rename = "message")]
pub r#message: Option<String>,
}
pub type r#ReturnsWarnings = Vec<ReturnsWarningsItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Returns {
#[serde(rename = "badges")]
pub r#badges: Option<r#ReturnsBadges>,
#[serde(rename = "warnings")]
pub r#warnings: Option<r#ReturnsWarnings>,
}
pub async fn call<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<Returns> {
let json = client.post("core_badges_get_user_badges", params).await?;
serde_json::from_value(json).map_err(|e| e.into())
}
pub async fn call_raw<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<serde_json::Value> {
client.post("core_badges_get_user_badges", params).await
}