Metadata-Version: 2.0
Name: bitso-py
Version: 3.0.1
Summary: A python wrapper for the Bitso API.
Home-page: https://github.com/bitsoex/bitso-py
Author: Mario Romero
Author-email: mario@bitso.com
License: LICENSE.txt
Description-Content-Type: UNKNOWN
Platform: UNKNOWN
Requires-Dist: requests (>=2.2.1)
Requires-Dist: websocket-client (==0.40.0)
Requires-Dist: python-dateutil (>=1.5)
Requires-Dist: mock (>=2.0.0)
Requires-Dist: future (>=0.16.0)

# 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()
 >>> books
AvilableBooks(books=btc_mxn,eth_mxn)
 >>> books.btc_mxn
Book(symbol=btc_mxn)
 >>> books.btc_mxn.minimum_amount
Decimal('0.00500000')
 ```


### Ticker ###

```python
## Ticker information
## Parameters
## [book] - Specifies which book to use
##                  - string
 >>> tick = api.ticker('btc_mxn')
 >>> tick
 Ticker(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.last
 Decimal('7866.27')
 >>> tick.created_at
 datetime.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_at
atetime.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].price
Decimal('3160.00')
>>> trades[0].amount
Decimal('0.00797922')
>>> trades[0].created_at
datetime.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 signed
with 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_limit
Decimal('5300')
>>> status.daily_remaining
Decimal('5300.00')

```



### Account Balances ###

```python
## Your account balances
>>> balances = api.balances()
>>> balances
Balances(currencies=btc,etc,eth,mxn)
>>> balances.currencies
[u'btc', u'etc', u'eth', u'mxn']
>>> balances.btc.name
u'btc'
>>> balances.btc.available
Decimal('3.46888741')

```

### Fees ###

```python
## Your trade fees
>>> fees = api.fees()
>>> fees
Fees(books=btc_mxn,eth_mxn)
>>> fees.books
[u'btc_mxn', u'eth_mxn']
>>> fees.btc_mxn
Fee(book=btc_mxn, fee_percent=0.0000)
>>> fees.btc_mxn.fee_percent
Decimal('0.8500')
>>> fees.withdrawal_fees
WithdawalFees(curencies=eth,btc)
>>> fees.withdrawal_fees.btc
Decimal('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].operation
u'fee'
>>> ledger[1].operation
u'trade'
>>> ledger[1].balance_updates
[BalanceUpdate(currency=mxn, amount=25.21433520,
BalanceUpdate(currency=btc, amount=-0.00797922]
>>> ledger[1].balance_updates[0].amount
Decimal('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].status
u'pending'
>>> withdrawals[0].method
u'Bitcoin'
>>> withdrawals[0].amount
Decimal('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].status
u'complete'
>>> fundings[0].amount
Decimal('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].btc
Decimal('0.00981097')
>>> txs[0].btc_mxn
Decimal('7780.00')
>>> txs[0].rate
Decimal('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].price
Decimal('7000.00')
>>> oo[0].oid
s5ntlud6oupippk8iigw5dazjdxwq5vibjcwdp32ksl9i4h0nyxsc8svlpscuov5

```

### 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')
>>> fd
FundingDestination(account_identifier_name=Bitcoin address)
## Returns a FundingDestination object
>>> fd.account_identifier
u'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_amount
Decimal('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_amount
Decimal('0.00328834')
>>> quote.wallet_address
u'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.
```python
from bitso import websocket


class 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.py
Connected
TradeUpdate(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.py
2016-05-09 20:17:32,232 - INFO - Starting new HTTPS connection (1): bitso.com
2016-05-09 20:17:33,118 - INFO - Order Book Fetched. Best ask: 8434.3700, Best bid: 8351.3000, Spread: 83.0700
2016-05-09 20:17:33,589 - INFO - Websocket Connection Established
2016-05-09 20:17:33,711 - INFO - Best ask: 8434.3700, Best bid: 8351.3000, Spread: 83.0700
2016-05-09 20:22:30,301 - INFO - New Order. ask: 0.0000 @ 8434.3700 = 0.0000
2016-05-09 20:22:30,306 - INFO - Removed price level at: 8434.3700
2016-05-09 20:22:30,306 - INFO - Best ask: 8440.0000, Best bid: 8351.3000, Spread: 88.7000
2016-05-09 20:22:31,021 - INFO - New Order. ask: 0.1000 @ 8492.9700 = 849.2900
2016-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.Book
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
symbol | String | Order book symbol | Major_Minor
minimum_amount | Decimal | Minimum amount of major when placing orders | Major
maximum_amount | Decimal | Maximum amount of major when placing orders | Major
minimum_price | Decimal | Minimum price when placing orders	 | Minor
maximum_price | Decimal | Maximum price when placing orders	 | Minor
minimum_value | Decimal | Minimum value amount (amount*price) when placing orders		 | Minor
maximum_value | Decimal | Maximum value amount (amount*price) when placing orders	 | Minor


### bitso.AvailableBooks
Atribute | 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.AccountRequiredField
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
name | String | Field name that will be user for “account_creation” endpoint | 
description | String | Describes each field | 


### bitso.Ticker
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
book | String | Order book symbol | Major_Minor
ask | Decimal | Lowest sell order | Minor/Major
bid | Decimal | Highest buy order | Minor/Major
last | Decimal | Last traded price | Minor/Major
high | Decimal | Last 24 hours price high | Minor/Major
low | Decimal | Last 24 hours price low | Minor/Major
vwap | Decimal | Last 24 hours price high | Minor/Major
volume | Decimal | Last 24 hours volume | Major
created_at | Datetime | Ticker current datetime | 

### bitso.PublicOrder

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
book | String | Order book symbol | Major_Minor
price | Decimal | Price per unit of major | Minor
amount | Decimal | Major amount in order | Major
created_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.OrderBook
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
asks | List | List of open asks | Minor/Major
bids | List | List of open bids | Minor/Major
created_at | Datetime | OrderBook current datetime | 


### bitso.Balance
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
name | String | 	Currency name | 
total | Decimal | Total balance for currency | Currency
locked | Decimal | Currency balance locked in open orders | Currency
available | Decimal | Currency balance available for use | Currency

### bitso.Balances
Atribute | 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.Fee
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
book | String | Order book symbol | Major_Minor
fee_decimal | Decimal | Customer trading fee as a decimal |
fee_percent | Decimal | Customer trading fee as a percentage |

### bitso.Fees
Atribute | 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.Trade
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
tid | Long | Trade ID | 
book | String | Order book symbol | Major_Minor
amount | Decimal | Major amount transacted | Major
price | Decimal | Price per unit of major | Minor
side | 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.Withdrawal
Atribute | 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 | currency
status | 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.Funding
Atribute | 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 | currency
status | 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.UserTrade
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
tid | Long | Trade ID | 
oid | String | Users’ Order ID | 
book | String | Order book symbol | Major_Minor
side | 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 | Major
minor | Decimal | Minor amount traded | Minor
price | Decimal | Price per unit of major | Minor
fees_currency | String | 	Indicates the currency in which the trade fee was charged | 
fees_amount | Decimal | Indicates the amount charged as trade fee | Major

### bitso.LedgerEntry
Atribute | 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.BalanceUpdate
Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
currency | String | Currency for this balance update | 
balance | Decimal | Amount added or subtracted to user balance | Currency

### bitso.Order

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
oid | String | The Order ID | 
book | String | Order book symbol | Major_Minor
type | 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 | Minor
amount | Decimal | The order’s major currency amount | Major

### bitso.FundingDestination
Atribute | 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.TransactionQuote

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
btc_amount | Decimal | The total amount in Bitcoins | Major
currency | 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.TransactionOrder

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
btc_amount | Decimal | The total amount in BTC | BTC
btc_pending | Decimal | Unconfirmed BTC, seen by Bitso servers  | BTC
btc_received | Decimal | Confirmed BTC seen by Bitso servers | BTC
confirmation_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.OrderUpdate

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
datetime | Datetime | Order Date/Time | 
side | String | 'bid','ask' | Market side 
rate | Decimal | Order price | Minor
amount | Decimal | Major currency amount | Major
value | Decimal | Total Order Value (amount*rate) | Minor 

### bitso.models.TradeUpdate

Atribute | Type | Description | Units
------------ | ------------- | ------------- | -------------
tid | Int | Trade ID | 
rate | Decimal | Order price | Minor
amount | Decimal | Major currency amount | Major
value | Decimal | Total Order Value (amount*rate) | Minor 

### bitso.models.StreamUpdate

Atribute | 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), etc

An order book is always referred to in the API as "Major_Minor". For example: "**btc_mxn**"


# Licence #

The MIT License (MIT)



