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 SkyBlock auction, as returned by `skyblock/auction` and `skyblock/auctions`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct SkyBlockAuction {
    #[serde(rename = "_id", default)]
    pub id: String,
    #[serde(default)]
    pub uuid: String,
    #[serde(default)]
    pub auctioneer: String,
    #[serde(default)]
    pub profile_id: String,
    #[serde(default)]
    pub coop: Vec<String>,
    #[serde(default)]
    pub start: i64,
    #[serde(default)]
    pub end: i64,
    #[serde(default)]
    pub item_name: String,
    #[serde(default)]
    pub item_lore: String,
    #[serde(default)]
    pub category: String,
    #[serde(default)]
    pub tier: String,
    #[serde(default)]
    pub starting_bid: i64,
    /// The auctioned item serialized as a base64+gzip NBT blob.
    #[serde(default)]
    pub item_bytes: Value,
    #[serde(default)]
    pub claimed: bool,
    #[serde(default)]
    pub highest_bid_amount: i64,
    #[serde(default)]
    pub bin: bool,
    #[serde(default)]
    pub bids: Vec<Value>,
    #[serde(flatten)]
    pub extra: JsonObject,
}

/// One page of the global active-auctions listing from `skyblock/auctions`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AuctionsPage {
    #[serde(default)]
    pub page: i64,
    #[serde(rename = "totalPages", default)]
    pub total_pages: i64,
    #[serde(rename = "totalAuctions", default)]
    pub total_auctions: i64,
    #[serde(rename = "lastUpdated", default)]
    pub last_updated: i64,
    #[serde(default)]
    pub auctions: Vec<SkyBlockAuction>,
}

/// A recently completed auction, as returned by `skyblock/auctions_ended`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct EndedAuction {
    #[serde(default)]
    pub auction_id: String,
    #[serde(default)]
    pub seller: String,
    #[serde(default)]
    pub seller_profile: String,
    #[serde(default)]
    pub buyer: String,
    #[serde(default)]
    pub buyer_profile: Option<String>,
    #[serde(default)]
    pub timestamp: i64,
    #[serde(default)]
    pub price: i64,
    #[serde(default)]
    pub bin: bool,
    /// The sold item serialized as a base64+gzip NBT blob.
    #[serde(default)]
    pub item_bytes: String,
    #[serde(flatten)]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct AuctionResponse {
    #[serde(default)]
    pub auctions: Vec<SkyBlockAuction>,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct EndedAuctionsResponse {
    #[serde(default)]
    pub auctions: Vec<EndedAuction>,
}