CoinGate Python SDK (API v2)
Project description
CoinGate Python Client (API v2)
This Client provides conveniet way to communicate between CoinGate API v2 and your Python code.
Requirements
Python 3.7+
Installing
pip install coingate-python
Dependencies
This library requires the following packages to work properly:
Getting started
You can sign up for a CoinGate account at https://coingate.com for production and https://sandbox.coingate.com for testing (sandbox).
Please note, that for Sandbox you must generate separate API credentials on https://sandbox.coingate.com. API credentials generated on https://coingate.com will not work for Sandbox mode.
Usage of Client looks like:
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN")
In order, to use sandbox mode, you need to pass second parameter as True
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN", True)
If you planning to use only Public API endpoints, you can initialize client without parameters
>>> from coingate import CoinGate
>>> client = CoinGate()
Full documentation of the CoinGate API can be found here
Payment Gateway API
Create Order
Create order at CoinGate and redirect shopper to invoice (payment_url
). This is private API endpoint and requires authentication.
>>> client.order.create(Decimal('10'), 'EUR', 'EUR')
NewOrder(
id=1,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
token='token'
)
Checkout
Placing created order with pre-selected payment currency (BTC, LTC, ETH, etc). Display payment_address
and pay_amount
for shopper or redirect to payment_url
. Can be used to white-label invoices. This is private API endpoint and requires authentication.
>>> client.order.checkout(123, 'EUR')
Checkout(
pay_currency='EUR',
pay_amount=Decimal('10'),
expire_at=datetime(2022, 10, 10, 12, 23, 22),
payment_address='addy',
platform=Platform(id=1, title='title', id_name='id_name')
)
Get Order
Retrieves a specific order. This is private API endpoint and requires authentication.
>>> client.order.get(123)
Order(
id=123,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
orderable_type='order',
orderable_id=1,
payment_address='addy'
)
List Orders
Retrieving information of all placed orders. This is private API endpoint and requires authentication.
>>> client.order.get_all()
PaginatedOrders(
current_page=1,
per_page=100,
total_orders=500,
total_pages=5,
orders=[
Order(
id=123,
status='new',
do_not_convert=False,
price_currency='EUR',
price_ammount=Decimal('10'),
lightning_network=False,
receive_currency='EUR',
receive_amount=Decimal('10'),
created_at=datetime(2022, 10, 10, 12, 23, 22),
order_id='',
payment_url='',
underpaid_amount=Decimal('0.000543'),
overpaid_amount=Decimal('0.000543'),
is_refundable=True,
orderable_type='order',
orderable_id=1,
payment_address='addy'
)
]
)
Refunds API
Create Order Refund
Creates a refund for an order. This is private API endpoint and requires authentication.
>>> client.refund.create_order_refund(1, Decimal('10'), 'addy', 1, 1, 'refund', 'email@email.com', 'id')
Refund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
address='addy',
status='new',
memo=None,
created_at=datetime(2022, 10, 10, 12, 23, 22),
order=RefundOrder(id=1),
transactions=['tx_id'],
ledger_account=RefundLedgerAccount(id=1, currency=Currency(id=1, title='Bitcoin', symbol='BTC'))
)
Get Order Refund
Retrieves a specific refund for an order. This is private API endpoint and requires authentication.
>>> client.refund.get_order_refund(1, 1)
Refund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
address='addy',
status='new',
memo=None,
created_at=datetime(2022, 10, 10, 12, 23, 22),
order=RefundOrder(id=1),
transactions=['tx_id'],
ledger_account=RefundLedgerAccount(id=1, currency=Currency(id=1, title='Bitcoin', symbol='BTC'))
)
Get Order Refunds
Retrieves all refunds for an order. This is private API endpoint and requires authentication.
>>> client.refund.get_order_refunds(1)
PaginatedRefunds(
current_page=1,
per_page=100,
total_refunds=500,
total_pages=5,
refunds=[
PaginatedRefundsRefund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
crypto_address='addy',
crypto_address_memo=None,
status='new',
order=RefundOrder(id=1),
refund_currency=RefundCurrency(
id=1,
title='Bitcoin',
symbol='BTC',
platform=RefundCurrencyPlatform(id=1, title='platform')
)
)
]
)
Get Refunds
Retrieves all refunds. This is private API endpoint and requires authentication.
>>> client.refund.get_refunds()
PaginatedRefunds(
current_page=1,
per_page=100,
total_refunds=500,
total_pages=5,
refunds=[
PaginatedRefundsRefund(
id=1,
request_amount=Decimal('10'),
refund_amount=Decimal('10'),
crypto_address='addy',
crypto_address_memo=None,
status='new',
order=RefundOrder(id=1),
refund_currency=RefundCurrency(
id=1,
title='Bitcoin',
symbol='BTC',
platform=RefundCurrencyPlatform(id=1, title='platform')
)
)
]
)
Ledger API
Get Account
Retrieves a specific ledger account. This is private API endpoint and requires authentication.
>>> client.ledger.get(1)
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('10'),
status='active',
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
)
)
List Accounts
Retrieves all ledger accounts. This is private API endpoint and requires authentication.
>>> client.ledger.get_all()
PaginatedLedgerAccounts(
current_page=1,
per_page=100,
total_accounts=2,
total_pages=100,
accounts=[
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('10'),
status='active',
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
)
),
LedgerAccount(
id="01GBPW7M2G5XQK3BE50XQRA36E",
balance=Decimal('11'),
status='active',
currency=Currency(
id=2,
title='Bitcoin',
symbol='BTC'
)
)
]
)
Withdrawals API
Get Withdrawals
Retrieves all withdrawals. This is private API endpoint and requires authentication.
>>> client.withdrawal.get_all()
PaginatedWithdrawals(
current_page=1,
per_page=100,
total_withdrawals=1000,
total_pages=10,
withdrawals=[
Withdrawal(
id=1,
status='active',
created_at=datetime('2022/10/10'),
completed_at=None,
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
payout_setting={
'id': 1,
'title': 'somewhere',
'address': 'addy',
'currency': {
'id': 1,
'title': 'Bitcoin',
'symbol': 'BTC'
}
}
platform=None
)
)
]
)
Get Withdrawal
Retrieves withdrawal by ID. This is private API endpoint and requires authentication.
>>> client.withdrawal.get(1)
Withdrawal(
id=1,
status='active',
created_at=datetime('2022/10/10'),
completed_at=None,
currency=Currency(
id=1,
title='Bitcoin',
symbol='BTC'
payout_setting={
'id': 1,
'title': 'somewhere',
'address': 'addy',
'currency': {
'id': 1,
'title': 'Bitcoin',
'symbol': 'BTC'
}
}
platform=None
)
)
Public API
Get Exchange Rate
Current exchange rate for any two currencies, fiat or crypto. This endpoint is public, authentication is not required.
# Get exchange rate for Merchants
>>> client.public.get_exchange_rate_for_merchant(from_currency="EUR", to_currency="BTC")
Decimal('0.0000472')
# Get exchange rate for Traders
>>> client.public.get_exchange_rate_for_trader(kind="buy", from_currency="EUR", to_currency="ETH")
Decimal('0.00063213')
List Exchange Rates
Current CoinGate exchange rates for Merchants and Traders. This endpoint is public, authentication is not required.
# Get all exchange rates for Merchants and Traders
>>> client.public.get_all_exchange_rates()
ExchangeRates(
merchant={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
trader=ExchangeTrader(
buy={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
sell={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
)
)
# Get all exchange rates for Merchants
>>> client.public.get_merchant_exchange_rates()
{
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
# Get all exchange rates for Traders
>>> client.public.get_trader_exchange_rates()
ExchangeTrader(
buy={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
sell={
'BTC': {
'EUR': Decimal('7449.99'),
'USD': Decimal('9139.34'),
'ETH': Decimal('13.18044023')
},
'EUR': {
'BTC': '0.00013351',
'USD': '1.2317',
'ETH': '0.00175954'
}
}
)
Ping
A health check endpoint for CoinGate API. This endpoint is public, authentication is not required.
>>> client.public.ping()
Ping(ping='pong', time='2017-12-13T19:07:18+00:00')
IP Addresses
Get IP addresses of CoinGate servers
>>> client.public.get_ip_addresses(separator="|")
'52.28.22.118|35.156.68.160'
Get Currencies
Retrieves all currencies.
>>> client.public.get_currencies(native=True, enabled=True, merchant_pay=True, merchant_receive=True, kind="crypto")
[
PublicCurrency(id=1,
title='Bitcoin',
kind='crypto',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=True, receive=True),
platforms=[
CurrencyPlatform(id=8, id_name='bitcoin', title='Bitcoin' enabled=True)
]
),
PublicCurrency(
id=2,
title='Euro',
kind='fiat',
symbol='EUR',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=3,
title='United States dollar',
kind='fiat',
symbol='USD',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=4,
title='British Pound',
kind='fiat',
symbol='GBP',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=False, receive=True),
platforms=None
),
PublicCurrency(
id=5,
title='Ethereum',
kind='crypto',
symbol='ETH',
native=True,
disabled=False,
disabled_message=None,
merchant=CurrencyMerchant(price=True, pay=True, receive=True),
platforms=[
CurrencyPlatform(id=2, id_name='binance_chain', title='Binance Chain (BEP2)', enabled=True),
CurrencyPlatform(id=7, id_name='ethereum', title='Ethereum', enabled=True)
]
)
]
Platforms
Get all platforms
>>> client.public.get_platforms(enabled=True)
[
PublicPlatform(
id=1,
title='Ethereum (ERC20)',
id_name='ethereum',
disabled=False,
disabled_message=None,
currencies=[
PlatformCurrency(id=50, title='Ethereum', symbol='ETH', enabled=True),
PlatformCurrency(id=61, title='DAI', symbol='DAI', enabled=True),
PlatformCurrency(id=71, title='Basic Attention Token', symbol='BAT', enabled=True)
]
),
PublicPlatform(
id=2,
title='Binance Chain (BEP2)',
id_name='binance_chain',
disabled=False,
disabled_message=None,
currencies=[
PlatformCurrency(id=50, title='Ethereum', symbol='ETH', enabled=True)
PlatformCurrency(id=91, title='Binance Coin', symbol='BNB', enabled=True)
]
)
]
Custom Request Timeout
To modify request timeout time, you need to call method which will change it.
>>> from coingate import CoinGate
>>> client = CoinGate("YOUR_API_TOKEN", True)
>>> client.set_timeout(10)
Setting API Key after initialization
If you decided to initialize client without API Key and you need to do it later, you can call method which will update auth headers.
>>> from coingate import Coingate
>>> client = CoinGate()
>>> client.public.ping()
Ping(ping='pong', time='2017-12-13T19:07:18+00:00')
>>> client.set_api_key('YOUR_API_KEY')
Attention plugin developers
Are you writing a plugin that integrates CoinGate and embeds our library? Then please use the setAppInfo function to identify your plugin. For example:
>>> from coingate import Coingate
>>> coingate.set_app_info("MyAwesomePlugin", "1.0.0")
The method should be called once, before any request is sent to the API. The second parameter is optional.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file coingate-client-1.1.0.tar.gz
.
File metadata
- Download URL: coingate-client-1.1.0.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.15 CPython/3.8.10 Linux/5.15.0-46-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d04c92bbb04cdfc985dbe1208682a9f35c646297a40b7666e203e92a65764394 |
|
MD5 | 8943fe925c17193882db4714d109927c |
|
BLAKE2b-256 | 88698ee7028619fcd7949c309aced87cae6534f70f2feb5ae6f3fdabf5428685 |
File details
Details for the file coingate_client-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: coingate_client-1.1.0-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.15 CPython/3.8.10 Linux/5.15.0-46-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7c014c29149d6e51443e025ae8469778a32072aeba2b88906ef08f676d9bc21 |
|
MD5 | 1797b887521c5a3b7ccd1a01286047d3 |
|
BLAKE2b-256 | ccfabbcd0bf9d2e906e1365b07e4f80f87dca0716286d0eeefe97708ece91c85 |