cbat 0.0.19

The unofficial Rust crate for the Coinbase Advanced Trade API
Documentation
use serde::Deserialize;

#[derive(Debug, Clone, Deserialize)]
pub struct UserOrder {
    pub avg_price: String,
    pub cancel_reason: String,
    pub client_order_id: String,
    pub completion_percentage: String,
    pub contract_expiry_type: String,
    pub cumulative_quantity: String,
    pub filled_value: String,
    pub leaves_quantity: String,
    pub limit_price: String,
    pub number_of_fills: String,
    pub order_id: String,
    pub order_side: String,
    pub order_type: String,
    pub outstanding_hold_amount: String,
    pub post_only: String,
    pub product_id: String,
    pub product_type: String,
    pub reject_reason: String,
    pub retail_portfolio_id: String,
    pub risk_managed_by: String,
    pub status: String,
    pub stop_price: String,
    pub time_in_force: String,
    pub total_fees: String,
    pub total_value_after_fees: String,
    pub trigger_status: String,
    pub creation_time: String,
    pub end_time: String,
    pub start_time: String,
}

#[derive(Debug, Clone, Deserialize)]
pub struct PerpetualFuturesPosition {
    pub product_id: String,
    pub portfolio_uuid: String,
    pub vwap: String,
    pub entry_vwap: String,
    pub position_side: String,
    pub margin_type: String,
    pub net_size: String,
    pub buy_order_size: String,
    pub sell_order_size: String,
    pub leverage: String,
    pub mark_price: String,
    pub liquidation_price: String,
    pub im_notional: String,
    pub mm_notional: String,
    pub position_notional: String,
    pub unrealized_pnl: String,
    pub aggregated_pnl: String,
}

#[derive(Debug, Clone, Deserialize)]
pub struct ExpiringFuturesPosition {
    pub product_id: String,
    pub side: String,
    pub number_of_contracts: String,
    pub realized_pnl: String,
    pub unrealized_pnl: String,
    pub entry_price: String,
}

#[derive(Debug, Clone, Deserialize)]
pub struct Positions {
    pub perpetual_futures_positions: Vec<PerpetualFuturesPosition>,
    pub expiring_futures_positions: Vec<ExpiringFuturesPosition>,
}

#[derive(Debug, Clone, Deserialize)]
pub struct UserEvent {
    #[serde(rename = "type")]
    pub event_type: String,
    pub orders: Vec<UserOrder>,
    pub positions: Positions,
}

#[derive(Debug, Clone, Deserialize)]
pub struct UserMessage {
    pub channel: String,
    pub client_id: String,
    pub timestamp: String,
    pub sequence_num: i64,
    pub events: Vec<UserEvent>,
}