Package: bitso-py
# bitso-py #A Python 2 and Python 3 wrapper for the [Bitso API](https://bitso.com/api_info/)[![Build Status](https://travis-ci.org/mariorz/python-bitso.svg?branch=master)](https://travis-ci.org/mariorz/python-bitso) [![Requirements Status](https://requires.io/github/mariorz/python-bitso/requirements.svg?branch=master)](https://requires.io/github/mariorz/python-bitso/requirements/?branch=master)# Public API Usage #```python>>> import bitso>>> api = bitso.Api()```# Private API Usage #```python>>> import bitso## Production account>>> api = bitso.Api(API_KEY, API_SECRET)## Developer account>>> api = bitso.Api(API_KEY, API_SECRET,"dev")```# Public calls #### Available Books ###```python## Order books available on Bitso>>> books = api.available_books()>>> booksAvilableBooks(books=btc_mxn,eth_mxn)>>> books.btc_mxnBook(symbol=btc_mxn)>>> books.btc_mxn.minimum_amountDecimal('0.00500000')```### Ticker ###```python## Ticker information## Parameters## [book] - Specifies which book to use##                  - string>>> tick = api.ticker('btc_mxn')>>> tickTicker(ask=7866.27, bid=7795.00, high=7866.27, last=7866.27, low=7707.43, datetime=2016-04-22 16:46:25, vwaplow=7795.00)>>> tick.lastDecimal('7866.27')>>> tick.created_atdatetime.datetime(2016, 4, 22, 16, 46, 53)```### Order Book ###```python## Public order book## Parameters## [book] - Specifies which book to use##                  - string## [aggregate = True] - Group orders with the same price##                - boolean>>> ob = api.order_book('btc_mxn')>>> ob.updated_atatetime.datetime(2016, 12, 13, 22, 54, 2, tzinfo=tzutc())>>> ob.bids[PublicOrder(book=btc_mxn,price=3160.00, amount=0.63966069),PublicOrder(book=btc_mxn,price=2959.00, amount=0.72143122),PublicOrder(book=btc_mxn,price=2850.00, amount=3.00000000),PublicOrder(book=btc_mxn,price=2750.00, amount=1.00000000),PublicOrder(book=btc_mxn,price=2500.12, amount=45.00000000),...]>>> ob.asks[PublicOrder(book=btc_mxn,price=8000.00, amount=48.37402966),PublicOrder(book=btc_mxn,price=8160.00, amount=0.12340000),PublicOrder(book=btc_mxn,price=9000.00, amount=40.00000000),PublicOrder(book=btc_mxn,price=9160.00, amount=0.76500000)...]```### Trades ###```python## Public trades## Parameters## [book = 'btc_mxn'] - Specifies which book to use##                    - str## [marker = None] - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                    - str## [sort = 'desc'] - Specifies ordering direction of returned objects (asc, desc)##                    - str## [limit = '25'] - Specifies number of objects to return. (Max is 100)##                    - str>>> trades = api.trades('btc_mxn')>>> trades[Trade(tid=1602, price=3160.00, amount=0.00797922, maker_side=buy, created_at=2016-12-13 21:32:05+00:00),Trade(tid=1601, price=3160.00, amount=0.01000000, maker_side=buy, created_at=2016-12-13 21:32:05+00:00),Trade(tid=1600, price=8000.00, amount=0.00312500, maker_side=sell, created_at=2016-12-13 21:32:04+00:00),Trade(tid=1599, price=8000.00, amount=0.01008572, maker_side=sell, created_at=2016-12-13 21:32:04+00:00),...]>>> trades[0].priceDecimal('3160.00')>>> trades[0].amountDecimal('0.00797922')>>> trades[0].created_atdatetime.datetime(2016, 12, 13, 21, 32, 5, tzinfo=tzutc())```# Private calls #Private endpoints are used to manage your account and your orders. These requests must be signedwith your [Bitso credentials](https://bitso.com/api_info#generating-api-keys)```python>>> import bitso>>> api = bitso.Api(API_KEY, API_SECRET)```### Account Status ###```python## Your account status>>> status = api.account_status()>>> status.daily_limitDecimal('5300')>>> status.daily_remainingDecimal('5300.00')```### Account Balances ###```python## Your account balances>>> balances = api.balances()>>> balancesBalances(currencies=btc,etc,eth,mxn)>>> balances.currencies[u'btc', u'etc', u'eth', u'mxn']>>> balances.btc.nameu'btc'>>> balances.btc.availableDecimal('3.46888741')```### Fees ###```python## Your trade fees>>> fees = api.fees()>>> feesFees(books=btc_mxn,eth_mxn)>>> fees.books[u'btc_mxn', u'eth_mxn']>>> fees.btc_mxnFee(book=btc_mxn, fee_percent=0.0000)>>> fees.btc_mxn.fee_percentDecimal('0.8500')>>> fees.withdrawal_feesWithdawalFees(curencies=eth,btc)>>> fees.withdrawal_fees.btcDecimal('0.001')```### Ledger ###```python## A ledger of your historic operations.## Parameters## [marker]    - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                 - string## [limit = 25]   - Limit result to that many transactions##                 - int## [sort = 'desc'] - Sorting by datetime##                 - string - 'asc' or##                 - 'desc'>>> ledger = api.ledger()>>> ledger[<bitso.models.LedgerEntry at 0x10d4fdc50>,<bitso.models.LedgerEntry at 0x10d4fd550>,<bitso.models.LedgerEntry at 0x10d5c4d90>,<bitso.models.LedgerEntry at 0x10d5c4bd0>,<bitso.models.LedgerEntry at 0x10d5c4550>,...]>>> ledger[0].operationu'fee'>>> ledger[1].operationu'trade'>>> ledger[1].balance_updates[BalanceUpdate(currency=mxn, amount=25.21433520,BalanceUpdate(currency=btc, amount=-0.00797922]>>> ledger[1].balance_updates[0].amountDecimal('25.21433520')```### Withdrawals ###```python## Detailed info on your fund withdrawals.## Parameters## [wids]    - Specifies which withdrawal objects to return by IDs##                 - list## [marker]    - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                 - string## [limit = 25]   - Limit result to that many transactions##                 - int## [sort = 'desc'] - Sorting by datetime##                 - string - 'asc' or##                 - 'desc'>>> withdrawals = api.withdrawals()>>> withdrawals[Withdrawal(wid=019e8f42da7eb0e44bf5ce0013475058, amount=0.001, currency=btc),Withdrawal(wid=efa28b88e326619d91ba809a82e1282b, amount=0.001, currency=btc),Withdrawal(wid=9bbde562c7de3e0c5315993a944d3873, amount=0.001, currency=btc),Withdrawal(wid=e19b33a5ec2606e8a25963ceea9d2254, amount=0.001, currency=btc),Withdrawal(wid=b76af418eb94c61b72c6bb20d316e115, amount=0.001, currency=btc),...]>>> withdrawals[0].statusu'pending'>>> withdrawals[0].methodu'Bitcoin'>>> withdrawals[0].amountDecimal('0.001')```### Fundings ###```python## Detailed info on your fundings.## Parameters## [fids]    - Specifies which funding objects to return by IDs##                 - list## [marker]    - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                 - string## [limit = 25]   - Limit result to that many transactions##                 - int## [sort = 'desc'] - Sorting by datetime##                 - string - 'asc' or##                 - 'desc'>>> fundings = api.fundings()>>> fundings[Funding(fid=4e28aa988a74d8b9868f400a18d00910, amount=49596.65217865, currency=mxn),Funding(fid=3799c39ea8f1ccf6e6bbcaea1a0cbed1, amount=8.12500000, currency=btc)]>>> fundings[0].statusu'complete'>>> fundings[0].amountDecimal('49596.65217865')```### User Trades ###```python## Your trades## Parameters## [book = all]- Specifies which book to use##                 - string## [marker]    - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                 - string## [limit = 25]   - Limit result to that many transactions##                 - int## [sort = 'desc'] - Sorting by datetime##                 - string - 'asc' or##                 - 'desc'>>> utx = api.user_trades()>>> utx[UserTrade(tid=1610, book=btc_mxn, price=3160.00, major=-0.00797922, minor=25.21433520),UserTrade(tid=1609, book=btc_mxn, price=3160.00, major=-0.01000000, minor=31.60000000),UserTrade(tid=1608, book=btc_mxn, price=8000.00, major=0.00312500, minor=-25.00000000),UserTrade(tid=1607, book=btc_mxn, price=8000.00, major=0.01008572, minor=-80.68576000),...,]>>> utx[0].type'trade'>>> utx[0].btcDecimal('0.00981097')>>> txs[0].btc_mxnDecimal('7780.00')>>> txs[0].rateDecimal('7780.00')```### Open Orders ###```python## Returns a list of the user’s open orders## Parameters## [book] - Specifies which book to use##                    - str## [marker]    - Returns objects that are older or newer (depending on 'sort’) than the object with this ID##                 - string## [limit = 25]   - Limit result to that many transactions##                 - int## [sort = 'desc'] - Sorting by datetime##                 - string - 'asc' or##                 - 'desc'>>> oo = api.open_orders('btc_mxn')>>> oo[Order(oid=s5ntlud6oupippk8iigw5dazjdxwq5vibjcwdp32ksk9i4h0nyxsc8svlpscuov5, side=buy, price=7000.00, original_amount=0.01000000, created_datetime=2016-04-22 14:31:10)]>>> oo[0].priceDecimal('7000.00')>>> oo[0].oids5ntlud6oupippk8iigw5dazjdxwq5vibjcwdp32ksl9i4h0nyxsc8svlpscuov5```### Lookup Order ###```python## Returns a list of details for 1 or more orders## Parameters## order_ids -  A list of Bitso Order IDs.##          - string>>> orders = api.lookup_order([ORDER_ID1, ORDER_ID2])>>> orders[Order(oid=s0ntlud6oupippk8iigw5dazjdxwq5vibjcwdp12ksk9i4h0nyxsc8svlpscuov5, side=buy, price=7000.00, original_amount=0.01000000, created_datetime=2016-04-22 14:31:10),Order(oid=whtyptv0f348fajdydoswcf6cj20d0kahd77657l7ctnnd1lrpdn2suebwfpxz0f, side=buy, price=7200.00, original_amount=0.01200000, created_datetime=2016-04-22 14:32:10)]```### Cancel Order ###```python## Cancels an open order## Parameters## order_id -  A Bitso Order ID.##          - string>>> api.cancel_order(ORDER_ID)u'true' #on success```### Place Order ###```python## Places a buy limit order.## [book] - Specifies which book to use (btc_mxn, eth_mxn)##                    - str## [side] - the order side (buy, sell)##                    - str## [order_type] - the order type (limit, market)##                    - str## amount - Amount of major currency to buy.##        - string## major  - The amount of major currency for this order. An order must be specified in terms of major or minor, never both.##        - string. Major denotes the cryptocurrency, in our case Bitcoin (BTC) or Ether (ETH).## minor  - The amount of minor currency for this order. Minor denotes fiat currencies, in our case Mexican Peso (MXN)##        - string## price  - Price per unit of major. For use only with limit orders##        - string>>> order = api.place_order(book='btc_mxn', side='buy', order_type='limit', major='.01', price='7000.00')>>> order{"oid":"jli47Q3gQqXflk1n"}```### Funding Destination Address ###```python## Gets a Funding destination address to fund your account## fund_currency  - Specifies the currency you want to fund your account with (btc, eth, mxn)##                            - str>>> fd = api.funding_destination('btc')>>> fdFundingDestination(account_identifier_name=Bitcoin address)## Returns a FundingDestination object>>> fd.account_identifieru'3CEWgs1goBbafUoThjWff4oX4wQKfxqpeV'## account_identifier attribute is the address you can use to fund your account```### Bitcoin Withdrawal ###```python## Triggers a bitcoin withdrawal from your account## amount  - The amount of BTC to withdraw from your account##         - string## address - The Bitcoin address to send the amount to##         - string>>> api.btc_withdrawal('0.000000001', '1TVXn5ajmMQEbkiYNobgHVutVtMWcNZGV')ok   # Returns 'ok' on success```### Ether Withdrawal ###```python## Triggers an ether withdrawal from your account## amount  - The amount of ETH to withdraw from your account##         - string## address - The Ethereum address to send the amount to##         - string>>> api.eth_withdrawal('0.000000001', '0x55f03a62acc946dedcf8a0c47f16ec3892b29e6d')ok   # Returns 'ok' on success```### Ripple Withdrawal ###```python## Triggers a ripple withdrawal from your account## currency  - The currency to withdraw##         - string## amount  - The amount of currency to withdraw from your account##         - string## address - The ripple address to send the amount to##         - string>>> api.ripple_withdrawal('xrp', '1.10', 'rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn')ok   # Returns 'ok' on success```### Bank Withdrawal (SPEI) ###```python## Triggers a SPEI withdrawal from your account. These withdrawals are##   immediate during banking hours (M-F 9:00AM - 5:00PM Mexico City Time).#### amount  - The amount of MXN to withdraw from your account##         - string## recipient_given_names - The recipient’s first and middle name(s)##         - string## recipient_family_names - The recipient’s last name)##         - string## clabe - The CLABE number where the funds will be sent to##         - string## notes_ref - The alpha-numeric reference number for this SPEI##         - string## numeric_ref - The numeric reference for this SPEI##         - string>>> api.spei_withdrawal(amount='3500.0', first_names='Satoshi', last_names='Nakamoto', clabe=CLABE, notes_ref=NOTES_REF, numeric_ref=NUMERIC_REF)ok   # Returns 'ok' on success```# Transfer API #**Access to this API is available on request, and not enabled by default. Users won’t be able to use this API unless Bitso has enabled it on their account. [API Docs](https://bitso.com/api_info/?shell#transfer-api5)**Bitso’s powerful Transfer API allows for simple integration for routing Bitcoin payments directly through to a choice of Mexican Peso end-points.The workflow is as follows:```python## Request quote>>> quote = api.transfer_quote(amount='25.0', currency='MXN')## Create transfer using quote>>> transfer = api.transfer_create(amount='25.0', currency='MXN', rate=quote.rate, payment_outlet='vo', email_address='mario@ret.io', recipient_given_name='mario romero')## Send bitcoins to address given>>> print(transfer.wallet_address)## Check Transfer status, after 1 confirmation, pesos are delivered>>> print(api.transfer_status(transfer.id).status)u'confirming'```### Get Transfer Quote ###```python## Get a quote for a transfer for various Bitso Outlets.#### btc_amount  - Mutually exclusive with amount. Either this, or amount should##               be present in the request. The total amount in Bitcoins, as##               provided by the user. NOTE: The amount is in BTC format##               (900mbtc = .9 BTC).##         - string## amount  - Mutually exclusive with btc_amount. Either this, or btc_amount##           should be present in the request. The total amount in Fiat currency.##           Use this if you prefer specifying amounts in fiat instead of BTC.##         - string## currency - An ISO 4217 fiat currency symbol (ie, "MXN"). If btc_amount is##            provided instead of amount, this is the currency to which the BTC##            price will be converted into. Otherwise, if amount is specified##            instead of btc_amount, this is the currency of the specified amount.##         - string>>> quote = api.transfer_quote(amount='25.0', currency='MXN')>>> print(quote)TransactionQuote(btc_amount=0.00328834, currency=MXN, rate=7602.60, created_at=2016-05-03 00:33:06, expires_at=2016-05-03 00:34:06, gross=25.00)>>> quote.btc_amountDecimal('0.00328834')>>> quote.outlets.keys()[u'sp', u'rp', u'vo', u'bw', u'pm']>>> quote.outlets['vo']{u'available': True,u'daily_limit': Decimal('0.00'),u'fee': Decimal('0.00'),u'id': u'vo',u'maximum_transaction': Decimal('9999.00'),u'minimum_transaction': Decimal('25.00'),u'name': u'Voucher',u'net': Decimal('25.00'),u'optional_fields': [],u'required_fields': {u'email_address': {u'id': u'email_address',u'name': u'Email Address'},u'recipient_given_name': {u'id': u'recipient_given_name', u'name': u''}},u'verification_level_requirement': u'0'}```### Create Transfer ###```python## Get a quote for a transfer for various Bitso Outlets.#### btc_amount  - Mutually exclusive with amount. Either this, or amount should##               be present in the request. The total amount in Bitcoins, as##               provided by the user. NOTE: The amount is in BTC format##               (900mbtc = .9 BTC).##         - string## amount  - Mutually exclusive with btc_amount. Either this, or btc_amount##           should be present in the request. The total amount in Fiat currency.##           Use this if you prefer specifying amounts in fiat instead of BTC.##         - string## currency - An ISO 4217 fiat currency symbol (ie, "MXN"). If btc_amount is##            provided instead of amount, this is the currency to which the BTC##            price will be converted into. Otherwise, if amount is specified##            instead of btc_amount, this is the currency of the specified amount.##         - string## rate - This is the rate (e.g. BTC/MXN), as acquired from the##        transfer_quote method. You must request a quote in this way before##        creating a transfer.##      - string## payment_outlet - The outlet_id as provided by quote method.##      - string## required fields parameters - Each of the other 'required_fields',##                              as stipulated in the TransferQuote for the chosen payment_outlet.##      - string>>> transfer = api.transfer_create(amount='25.0', currency='MXN', rate=quote.rate, payment_outlet='vo', email_address='satoshin@gmx.com', recipient_given_name='satoshi nakamoto')>>> print(transfer)TransactionQuote(btc_amount=0.00328834, currency=MXN, rate=7602.60, created_at=2016-05-03 00:33:06, expires_at=2016-05-03 00:34:06, gross=25.00)>>> transfer.btc_amountDecimal('0.00328834')>>> quote.wallet_addressu'3LiLpKyfXJmeDcD5ABGtmHGjkxnZTHnBxv'}```### Get Transfer Status ###```python## Request status for a transfer order#### transfer_id  - Bitso Transfer Order ID (As returned by transfer_create##                method.##         - string>>> print(api.transfer_status(transfer.id).status)u'confirming'```# Websocket API #WebSocket is a protocol providing full-duplex communication channels over a single TCP connection. [Bitso's Websocket API](https://bitso.com/api_info/?shell#websocket-api) allows a continuous connection that will receive updates according to the client's subscribed channels.#### Available Channels: ####+ **'trades':** will send updates on each new registered trade.+ **'diff-orders':** will send across any modifications to the order book. Specifically, any state changes in existing orders (including orders not in the top 20), and any new orders.+ **'orders':** maintains an up-to-date list of the top 20 asks and the top 20 bids, new updates are sent across the channel whenever there is a change in either top 20.#### Basic Example ####Prints every trade.```pythonfrom bitso import websocketclass BasicBitsoListener(websocket.Listener):def on_connect(self):print("Connected")def on_update(self, data):for obj in data.updates:print(obj)if __name__ == '__main__':listener = BasicBitsoListener()client = websocket.Client(listener)channels = ['trades']book = 'btc_mxn'client.connect(channels, book)``````shell> python examples/ws_trades.pyConnectedTradeUpdate(tid=96093, amount=0.00296048, rate=8444.56,value=25)TradeUpdate(tid=96094, amount=0.0568058, rate=8444.56,value=479.7)TradeUpdate(tid=96095, amount=0.45721742, rate=8444.56,value=3861)TradeUpdate(tid=96096, amount=1.25176796, rate=8335.88,value=10434.58)TradeUpdate(tid=96097, amount=0.75948406, rate=8335.83,value=6330.93)TradeUpdate(tid=96098, amount=0.38027314, rate=8334.31,value=3169.31)TradeUpdate(tid=96099, amount=0.54340182, rate=8329.95,value=4526.5)TradeUpdate(tid=96100, amount=0.44632784, rate=8323.59,value=3715.04)TradeUpdate(tid=96101, amount=0.03216174, rate=8322.31,value=267.65)TradeUpdate(tid=96102, amount=2.92387591, rate=8318.13,value=24321.17)TradeUpdate(tid=96103, amount=0.27482146, rate=8313.96,value=2284.85)TradeUpdate(tid=96104, amount=1.33065393, rate=8312,value=11060.39)TradeUpdate(tid=96105, amount=0.70166614, rate=8310.66,value=5831.3)TradeUpdate(tid=96106, amount=0.11416146, rate=8434.37,value=962.88)```#### Advanced Example ####Gets a copy of the order book via the rest API once, and keeps it up to date using the **'diff-orders'** channel. Logs every order, spread update, or trade.See [examples/livebookexample.py](https://github.com/bitsoex/bitso-py/blob/master/examples/livebookexample.py)```shell> python examples/livebookexample.py2016-05-09 20:17:32,232 - INFO - Starting new HTTPS connection (1): bitso.com2016-05-09 20:17:33,118 - INFO - Order Book Fetched. Best ask: 8434.3700, Best bid: 8351.3000, Spread: 83.07002016-05-09 20:17:33,589 - INFO - Websocket Connection Established2016-05-09 20:17:33,711 - INFO - Best ask: 8434.3700, Best bid: 8351.3000, Spread: 83.07002016-05-09 20:22:30,301 - INFO - New Order. ask: 0.0000 @ 8434.3700 = 0.00002016-05-09 20:22:30,306 - INFO - Removed price level at: 8434.37002016-05-09 20:22:30,306 - INFO - Best ask: 8440.0000, Best bid: 8351.3000, Spread: 88.70002016-05-09 20:22:31,021 - INFO - New Order. ask: 0.1000 @ 8492.9700 = 849.29002016-05-09 20:22:31,022 - INFO - Best ask: 8440.0000, Best bid: 8351.3000, Spread: 88.7000```# Models #The wrapper uses models to represent data structures returned by the Bitso API.### bitso.BookAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------symbol | String | Order book symbol | Major_Minorminimum_amount | Decimal | Minimum amount of major when placing orders | Majormaximum_amount | Decimal | Maximum amount of major when placing orders | Majorminimum_price | Decimal | Minimum price when placing orders	 | Minormaximum_price | Decimal | Maximum price when placing orders	 | Minorminimum_value | Decimal | Minimum value amount (amount*price) when placing orders		 | Minormaximum_value | Decimal | Maximum value amount (amount*price) when placing orders	 | Minor### bitso.AvailableBooksAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------books | list | symbols for each book available | -btc_mxn | bitso.Book | btc_mxn bitso.Book Object| -eth_mxn | bitso.Book | eth_mxn bitso.Book Object| -### bitso.AccountRequiredFieldAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------name | String | Field name that will be user for “account_creation” endpoint |description | String | Describes each field |### bitso.TickerAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------book | String | Order book symbol | Major_Minorask | Decimal | Lowest sell order | Minor/Majorbid | Decimal | Highest buy order | Minor/Majorlast | Decimal | Last traded price | Minor/Majorhigh | Decimal | Last 24 hours price high | Minor/Majorlow | Decimal | Last 24 hours price low | Minor/Majorvwap | Decimal | Last 24 hours price high | Minor/Majorvolume | Decimal | Last 24 hours volume | Majorcreated_at | Datetime | Ticker current datetime |### bitso.PublicOrderAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------book | String | Order book symbol | Major_Minorprice | Decimal | Price per unit of major | Minoramount | Decimal | Major amount in order | Majorcreated_at | Datetime | The datetime at which the order was created |updated_at | Datetime | The datetime at which the order was updated (Can be None) |### bitso.OrderBookAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------asks | List | List of open asks | Minor/Majorbids | List | List of open bids | Minor/Majorcreated_at | Datetime | OrderBook current datetime |### bitso.BalanceAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------name | String | 	Currency name |total | Decimal | Total balance for currency | Currencylocked | Decimal | Currency balance locked in open orders | Currencyavailable | Decimal | Currency balance available for use | Currency### bitso.BalancesAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------currencies | list | name for each currency | -mxn | bitso.Balance | mxn bitso.Balance Object | -btc | bitso.Balance | btc bitso.Balance Object | -eth | bitso.Balance | eth bitso.Balance Object | -### bitso.FeeAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------book | String | Order book symbol | Major_Minorfee_decimal | Decimal | Customer trading fee as a decimal |fee_percent | Decimal | Customer trading fee as a percentage |### bitso.FeesAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------books | list | name for each book | -btc_mxn | bitso.Fee | btc_mxn bitso.Fee Object | -eth_mxn | bitso.Fee | eth_mxn bitso.Fee Object | -### bitso.TradeAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------tid | Long | Trade ID |book | String | Order book symbol | Major_Minoramount | Decimal | Major amount transacted | Majorprice | Decimal | Price per unit of major | Minorside | String | Indicates the maker order side (maker order is the order that was open on the order book) |created_at | Datetime | Datetime at which the trade was executed |### bitso.WithdrawalAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------wid | String | Withdrawal ID |currency | String | Currency withdrawn symbol |method | String | Method for this withdrawal (MXN, BTC, ETH) |amount | Decimal | The withdrawn amount | currencystatus | String | 	The status for this withdrawal (pending, complete, cancelled) |created_at | Datetime | Datetime at which the withdrawal as created |details | Dict | 	Specific withdrawal details) |### bitso.FundingAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------fid | String | Funding ID |currency | String | Currency funding symbol |method | String | Method for this funding (MXN, BTC, ETH) |amount | Decimal | The funding amount | currencystatus | String | 	The status for this funding (pending, complete, cancelled) |created_at | Datetime | Datetime at which the funding as recieved |details | Dict | 	Specific funding details |### bitso.UserTradeAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------tid | Long | Trade ID |oid | String | Users’ Order ID |book | String | Order book symbol | Major_Minorside | String | Indicates the user’s side for this trade (buy, sell) |created_at | Datetime | Datetime at which the trade was executed |major | Decimal | Major amount traded | Majorminor | Decimal | Minor amount traded | Minorprice | Decimal | Price per unit of major | Minorfees_currency | String | 	Indicates the currency in which the trade fee was charged |fees_amount | Decimal | Indicates the amount charged as trade fee | Major### bitso.LedgerEntryAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------eid | String | Entry ID	|operation | String | Indicates type of operation (funding, withdrawal, trade, fee) |created_at | Datetime | Timestamp at which the operation was recorded |balance_updates | List | Updates to user balances for this operation |details | Dict | Specific operation details |### bitso.BalanceUpdateAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------currency | String | Currency for this balance update |balance | Decimal | Amount added or subtracted to user balance | Currency### bitso.OrderAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------oid | String | The Order ID |book | String | Order book symbol | Major_Minortype | String | The order type (market, limit) |side | String | The order side (buy, sell) |status | String | The order’s status (open, partial-fill, closed)) |created_at | Datetime | The date the order was created |updated_at | Datetime | Timestamp at which the order was updated (can be None) |price | Decimal | The order’s price | Minoramount | Decimal | The order’s major currency amount | Major### bitso.FundingDestinationAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------account_identifier_name | String | Account identifier name to fund with the specified currency. |account_identifier | String | Identifier to where the funds can be sent to |### bitso.TransactionQuoteAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------btc_amount | Decimal | The total amount in Bitcoins | Majorcurrency | String | An ISO 4217 fiat currency symbol (ie, “MXN”). |gross | Decimal |  |rate | Decimal | This major/manor rate (e.g. BTC/MXN) |outlets | Dictionary | Dictionary of Bitso Outlet options |created_at | Datetime | The date the quote was created |expires_at | Datetime | The date the quote will expire |### bitso.TransactionOrderAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------btc_amount | Decimal | The total amount in BTC | BTCbtc_pending | Decimal | Unconfirmed BTC, seen by Bitso servers  | BTCbtc_received | Decimal | Confirmed BTC seen by Bitso servers | BTCconfirmation_code | String | |currency | String | An ISO 4217 fiat currency symbol (ie, “MXN”). |currency_amount | Decimal | |currency_settled | Decimal | |currency_fees | Decimal | |fields | Dictionary | Required fields for Pyament Outlet |created_at | Datetime | The date the transfer was created |expires_at | Datetime | The date the transfer order will expire |id | String | Transfer Order ID |payment_outlet_id | String | Payment Outlet ID |qr_img_uri | String | Bitcoin payment QR Code URI |user_uri | String | Transfer Order URI |wallet_address | String | Bitcoin address you will send BTC to### bitso.models.OrderUpdateAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------datetime | Datetime | Order Date/Time |side | String | 'bid','ask' | Market siderate | Decimal | Order price | Minoramount | Decimal | Major currency amount | Majorvalue | Decimal | Total Order Value (amount*rate) | Minor### bitso.models.TradeUpdateAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------tid | Int | Trade ID |rate | Decimal | Order price | Minoramount | Decimal | Major currency amount | Majorvalue | Decimal | Total Order Value (amount*rate) | Minor### bitso.models.StreamUpdateAtribute | Type | Description | Units------------ | ------------- | ------------- | -------------channel | String | ('diff-orders', 'trades', 'orders') |updates | List | List of (TradeUpdate or OrderUpdate) objects |# Notations #**Major** denotes the cryptocurrency, in our case Bitcoin (BTC).**Minor** denotes fiat currencies such as Mexican Peso (MXN), etcAn order book is always referred to in the API as "Major_Minor". For example: "**btc_mxn**"# Licence #The MIT License (MIT)