hypixel-sdk 0.2.1

Async client for the Hypixel Public API with typed models and SkyBlock helpers
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

use crate::models::common::JsonObject;

/// A player's museum, as returned by `skyblock/museum`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Museum {
    #[serde(default)]
    pub value: i64,
    #[serde(default)]
    pub appraisal: bool,
    #[serde(default)]
    pub items: Value,
    #[serde(default)]
    pub special: Vec<Value>,
    #[serde(flatten)]
    pub extra: JsonObject,
}

/// A profile's garden, as returned by `skyblock/garden`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Garden {
    #[serde(default)]
    pub uuid: String,
    #[serde(rename = "garden_experience", default)]
    pub garden_experience: i64,
    #[serde(default)]
    pub commission_data: Option<Value>,
    #[serde(default)]
    pub composter_data: Option<Value>,
    #[serde(default)]
    pub active_commissions: Option<Value>,
    #[serde(default)]
    pub resources_collected: Option<Value>,
    #[serde(default)]
    pub crop_upgrade_levels: Option<Value>,
    #[serde(default)]
    pub unlocked_plots_ids: Vec<String>,
    #[serde(default)]
    pub unlocked_barn_skins: Vec<String>,
    #[serde(default)]
    pub selected_barn_skin: Option<String>,
    #[serde(flatten)]
    pub extra: JsonObject,
}

/// An item on sale during a SkyBlock fire sale, from `skyblock/firesales`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct FireSale {
    #[serde(default)]
    pub item_id: String,
    #[serde(default)]
    pub start: i64,
    #[serde(default)]
    pub end: i64,
    #[serde(default)]
    pub amount: i64,
    #[serde(default)]
    pub price: i64,
    #[serde(flatten)]
    pub extra: JsonObject,
}

/// A SkyBlock news item, as returned by `skyblock/news`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct NewsItem {
    #[serde(default)]
    pub item: Value,
    #[serde(default)]
    pub link: String,
    #[serde(default)]
    pub title: String,
    #[serde(default)]
    pub text: String,
    #[serde(flatten)]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct MuseumResponse {
    pub profile: Option<Museum>,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct GardenResponse {
    pub garden: Option<Garden>,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct FireSalesResponse {
    #[serde(default)]
    pub sales: Vec<FireSale>,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct NewsResponse {
    #[serde(default)]
    pub items: Vec<NewsItem>,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct BingoEventsResponse {
    #[serde(default)]
    pub events: Vec<Value>,
}