from serde import Model, fields # { # "id": "92f0b26b-4c98-4553-9c74-cdafc7e037db", # "clientOrderId": "ccxt_26adcbf445674f01af38a66a15e6f5b5", # "timestamp": 1666096856515, # "datetime": "2022-10-18T12:40:56.515477181Z", # "lastTradeTimeStamp": null, # "status": "open", # "symbol": "BTC/USD", # "type": "market", # "timeInForce": "gtc", # "postOnly": null, # "side": "buy", # "price": null, # "stopPrice": null, # "cost": null, # "average": null, # "amount": 1.1, # "filled": 0.0, # "remaining": 1.1, # "trades": [], # "fee": null, # "info": { # "id": "92f0b26b-4c98-4553-9c74-cdafc7e037db", # "client_order_id": "ccxt_26adcbf445674f01af38a66a15e6f5b5", # "created_at": "2022-10-18T12:40:56.516095561Z", # "updated_at": "2022-10-18T12:40:56.516173841Z", # "submitted_at": "2022-10-18T12:40:56.515477181Z", # "filled_at": null, # "expired_at": null, # "canceled_at": null, # "failed_at": null, # "replaced_at": null, # "replaced_by": null, # "replaces": null, # "asset_id": "276e2673-764b-4ab6-a611-caf665ca6340", # "symbol": "BTC/USD", # "asset_class": "crypto", # "notional": null, # "qty": "1.1", # "filled_qty": "0", # "filled_avg_price": null, # "order_class": "", # "order_type": "market", # "type": "market", # "side": "buy", # "time_in_force": "gtc", # "limit_price": null, # "stop_price": null, # "status": "pending_new", # "extended_hours": false, # "legs": null, # "trail_percent": null, # "trail_price": null, # "hwm": null, # "subtag": null, # "source": null # }, # "fees": [], # "lastTradeTimestamp": null # } class CCXTInfo(Model): id = fields.Uuid() client_order_id = fields.Str() created_at = fields.Str() updated_at = fields.Str() submitted_at = fields.Str() filled_at = fields.Optional(fields.Str()) expired_at = fields.Optional(fields.Str()) canceled_at = fields.Optional(fields.Str()) failed_at = fields.Optional(fields.Str()) replaced_at = fields.Optional(fields.Str()) replaced_by = fields.Optional(fields.Str()) replaces = fields.Optional(fields.Str()) asset_id = fields.Uuid() symbol = fields.Str() asset_class = fields.Str() notional = fields.Optional(fields.Str()) qty = fields.Str() filled_qty = fields.Str() filled_avg_price = fields.Optional(fields.Str()) order_class = fields.Str() order_type = fields.Str() type = fields.Str() side = fields.Str() time_in_force = fields.Str() limit_price = fields.Optional(fields.Str()) stop_price = fields.Optional(fields.Str()) status = fields.Str() extended_hours = fields.Bool() legs = fields.Optional(fields.List(fields.Nested("CCXTInfo"))) trail_percent = fields.Optional(fields.Str()) trail_price = fields.Optional(fields.Str()) hwm = fields.Optional(fields.Str()) subtag = fields.Optional(fields.Str()) source = fields.Optional(fields.Str()) class CCXTRoot(Model): id = fields.Uuid() clientOrderId = fields.Str() timestamp = fields.Int() datetime = fields.Str() lastTradeTimeStamp = fields.Optional(fields.Str()) status = fields.Str() symbol = fields.Str() type = fields.Str() timeInForce = fields.Str() postOnly = fields.Optional(fields.Str()) side = fields.Str() price = fields.Optional(fields.Float()) stopPrice = fields.Optional(fields.Float()) cost = fields.Optional(fields.Float()) average = fields.Optional(fields.Float()) amount = fields.Float() filled = fields.Float() remaining = fields.Float() trades = fields.Optional(fields.List(fields.Dict())) fee = fields.Optional(fields.Float()) info = fields.Nested(CCXTInfo) fees = fields.Optional(fields.List(fields.Dict())) lastTradeTimestamp = fields.Optional(fields.Str())