# SouthXChange Python API Client
`SxcAPIClient` is a simple Python wrapper around SouthXChange API implementing all the requests as described in [official documentation](https://main.southxchange.com/Content/swagger/ui/?urls.primaryName=API%20v4#/).
API v4 is supported so far.
## Table of contents
* [Quick start](#quick_start)
* [Installation](#installation)
* [Usage](#usage)
* [Requests](#requests)
* [Public data](#public_data)
* [List markets](#list_markets)
* [Get price](#get_price)
* [List prices](#list_prices)
* [List market history](#list_market_history)
* [List market history by granularity](#scroll_market_history_by_granularity)
* [List order book](#list_order_book)
* [List trades](#list_trades)
* [List fees](#list_fees)
* [Private data](#private_data)
* [Get user info](#get_user_info)
* [List wallets](#list_wallets)
* [Place order](#place_order)
* [Cancel order](#cancel_order)
* [Cancel market orders](#cancel_market_orders)
* [List pending orders](#list_pending_orders)
* [Get order](#get_order)
* [List orders by codes](#list_orders_by_codes)
* [Generate new address](#generate_new_address)
* [List addresses](#list_addresses)
* [Generate Lightning Network invoice](#generate_ln_invoice)
* [Withdraw](#withdraw)
* [List balances](#list_balances)
* [List transactions](#list_transactions)
<a name="quick_start"></a>
## Quick start
<a name="installation"></a>
### Installation
```commandline
pip3 install sxc-api-client
```
<a name="usage"></a>
### Usage
Querying publicly available data is as simple as that:
```python
from sxc_api_client import SxcApiClient
client = SxcApiClient()
markets = client.list_markets()
```
If you are going to have a deal with private data as well (i.e. bound to a specific account) you have to provide your API access and secret keys. Optionally, you may also specify connect/read timeout in seconds either as a single value or a tuple; by default, timeout is set to 10 seconds.
```python
from sxc_api_client import SxcApiClient
client = SxcApiClient("your_access_key", "your_secret_key", timeout=5)
orders = client.list_pending_orders()
```
<a name="requests"></a>
## Requests
<a name="public_data"></a>
### Public data
---
<a name="list_markets"></a>
#### list_markets()
Lists all markets.
* **Returns**
Markets.
* **Example**
```python
>>> client.list_markets()
[
['DASH', 'BTC', 5],
['LTC', 'BTC', 7]
]
```
---
<a name="get_price"></a>
#### get_price(target_currency: str, reference_currency: str)
Gets price of a given market.
* **Parameters**
* **target_currency** – Listing currency code.
* **reference_currency** – Reference currency code.
* **Returns**
Price of a given market.
* **Example**
```python
>>> client.get_price('CRW', 'BTC')
{
'Bid': 0.067417841,
'Ask': 0.067808474,
'Last': 0.068148556,
'Variation24Hr': -8.38,
'Volume24Hr': 2.63158984
}
```
---
<a name="list_prices"></a>
#### list_prices()
Lists prices of all markets.
* **Returns**
Market prices.
* **Example**
```python
>>> client.list_prices()
[
{
'Market': 'DASH/BTC',
'Bid': 0.002117966,
'Ask': 0.002131398,
'Last': 0.002142643,
'Variation24Hr': 0.25,
'Volume24Hr': 5.6542005
},
{
'Market': 'LTC/BTC',
'Bid': 0.00328,
'Ask': 0.003289038,
'Last': 0.003324991,
'Variation24Hr': -0.38,
'Volume24Hr': 33.92142523
}
]
```
---
<a name="list_market_history"></a>
#### list_market_history(target_currency: str, reference_currency: str, start_ts: int | float, end_ts: int | float, periods: int)
List market history between two dates. Please keep in mind it is strongly recommended to pass `start_ts` and
`end_ts` so that difference between them is aliquot to `periods`; otherwise unexpected data may be
returned without any warning. Besides, as a rule of thumb consider that the value of statement
`(end_ts - start) / periods` should be equal to one of the values defined in
`sxc_api_client.constants.MarketHistoryIntervals`. Hopefully those restrictions will be eliminated in
SouthXChange API.
* **Parameters**
* **target_currency** – Listing currency code.
* **reference_currency** – Reference currency code.
* **start_ts** – Start timestamp from January 1, 1970.
* **end_ts** – End timestamp from January 1, 1970.
* **periods** – Number of periods to get. Limited to 500; if bigger value is provided API silently resets it to 500.
* **Returns**
Market history.
* **Example**
```python
>>> client.list_market_history('ETH', 'BTC',
... datetime(2022, 1, 1, tzinfo=timezone.utc).timestamp(),
... datetime(2022, 1, 3, tzinfo=timezone.utc).timestamp(),
... 2)
[
{
'Date': datetime.datetime(2022, 1, 1, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.079624402,
'PriceLow': 0.077018168,
'PriceOpen': 0.079384817,
'PriceClose': 0.077232438,
'Volume': 0.70592287
}, {
'Date': datetime.datetime(2022, 1, 2, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.080658164,
'PriceLow': 0.077179415,
'PriceOpen': 0.077232438,
'PriceClose': 0.079098818,
'Volume': 0.59452678
}, {
'Date': datetime.datetime(2022, 1, 3, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.080598789,
'PriceLow': 0.067001496,
'PriceOpen': 0.079098818,
'PriceClose': 0.079553838,
'Volume': 2.18225486
}
]
```
---
<a name="scroll_market_history_by_granularity"></a>
#### scroll_market_history_by_granularity(target_currency: str, reference_currency: str, start_ts: int | float, end_ts: int | float, granularity: int, \*\*kwargs)
List market history between two dates with given granularity. A handier version of
`sxc_api_client.client.SxcApiClient.list_market_history()`
* **Parameters**
* **target_currency** – Listing currency code.
* **reference_currency** – Reference currency code.
* **start_ts** – Start timestamp from January 1, 1970.
* **end_ts** – End timestamp from January 1, 1970.
* **granularity** – Interval in seconds. Use constants defined in `sxc_api_client.constants.MarketHistoryIntervals`.
* **strict_mode** – Raise exception if granularity in a response does not match the given one.
Such a case is possible when either (1) arbitrary granularity (except values defined in
`sxc_api_client.constants.MarketHistoryIntervals`) is provided or (2) currency pair was listed on the market
after the given start_ts or (3) end_ts is relatively far in the future. Defaults to True.
* **Returns**
Market history.
* **Example**
```python
>>> from sxc_api_client.constants import MarketHistoryIntervals
>>> for m in client.scroll_market_history_by_granularity(
... 'ETH', 'BTC',
... datetime(2022, 1, 1, tzinfo=timezone.utc).timestamp(),
... datetime(2022, 1, 3, tzinfo=timezone.utc).timestamp(),
... MarketHistoryIntervals.DAYS_1):
... print(m)
[
{
'Date': datetime.datetime(2022, 1, 1, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.079624402,
'PriceLow': 0.077018168,
'PriceOpen': 0.079384817,
'PriceClose': 0.077232438,
'Volume': 0.70592287
}, {
'Date': datetime.datetime(2022, 1, 2, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.080658164,
'PriceLow': 0.077179415,
'PriceOpen': 0.077232438,
'PriceClose': 0.079098818,
'Volume': 0.59452678
}, {
'Date': datetime.datetime(2022, 1, 3, 0, 0, tzinfo=datetime.timezone.utc),
'PriceHigh': 0.080598789,
'PriceLow': 0.067001496,
'PriceOpen': 0.079098818,
'PriceClose': 0.079553838,
'Volume': 2.18225486
}
]
```
---
<a name="list_order_book"></a>
#### list_order_book(target_currency: str, reference_currency: str)
Lists order book of a given market.
* **Parameters**
* **target_currency** – Listing currency code.
* **reference_currency** – Reference currency code.
* **Returns**
Order book.
* **Example**
```python
>>> client.list_order_book('ETH', 'BTC')
{
"BuyOrders": [
{
"Index": 0,
"Amount": 0.00147298,
"Price": 0.067889252
},
{
"Index": 1,
"Amount": 0.1979,
"Price": 0.067889251
}
],
"SellOrders": [
{
"Index": 0,
"Amount": 0.01103169,
"Price": 0.068781728
},
{
"Index": 1,
"Amount": 0.2991489,
"Price": 0.06901085
}
]
}
```
---
<a name="list_trades"></a>
#### list_trades(target_currency: str, reference_currency: str)
Lists the latest trades in a given market.
* **Parameters**
* **target_currency** – Listing currency code.
* **reference_currency** – Reference currency code.
* **Returns**
Latest trades.
* **Example**
```python
>>> client.list_trades('ETH', 'BTC')
[
{
'At': 1668012323,
'Amount': 0.38359823,
'Price': 0.068379352,
'Type': 'buy'
}, {
'At': 1668012304,
'Amount': 0.45140177,
'Price': 0.068379352,
'Type': 'buy'
}
]
```
---
<a name="list_fees"></a>
#### list_fees()
Get general information about currencies, markets, trader levels and their fees.
* **Returns**
Fees data.
* **Example**
```python
>>> client.list_fees()
{
"Currencies": [
{
"Code": "BTC",
"Name": "Bitcoin",
"Precision": 9,
"MinDeposit": 0.00005,
"DepositFeeMin": 0.0,
"MinWithdraw": 0.0002,
"WithdrawFee": 0.0,
"WithdrawFeeMin": 0.00015,
"MinAmount": 0.000000001
},
{
"Code": "ETH",
"Name": "Ethereum",
"Precision": 8,
"MinDeposit": 0.01,
"DepositFeeMin": 0.0,
"MinWithdraw": 0.007,
"WithdrawFee": 0.0,
"WithdrawFeeMin": 0.0035,
"MinAmount": 0.0
}
],
"Markets": [
{
"ListingCurrencyCode": "ETH",
"ReferenceCurrencyCode": "BTC",
"MakerFee": 0.001,
"TakerFee": 0.003,
"MinOrderListingCurrency": None,
"PricePrecision": None
}
],
"TraderLevels": [
{
"Name": "TraderLevel1",
"MinVolumeAmount": 0.1,
"MinVolumeCurrency": "BTC",
"MakerFeeRebate": 0.2,
"TakerFeeRebate": 0.2
},
{
"Name": "TraderLevel2",
"MinVolumeAmount": 0.5,
"MinVolumeCurrency": "BTC",
"MakerFeeRebate": 0.4,
"TakerFeeRebate": 0.4
}
]
}
```
<a name="private_data"></a>
### Private data
---
<a name="get_user_info"></a>
#### get_user_info()
Get user information (level). Use `SxcApiClient.list_fees()` to retrieve actual fees applicable to user
level.
* **Returns**
User information.
* **Example**
```python
>>> client.get_user_info()
{'TraderLevel': 'TraderLevel1'}
```
---
<a name="list_wallets"></a>
#### list_wallets()
Retrieves the status for all wallets.
* **Returns**
Wallets information.
* **Example**
```python
>>> client.list_wallets()
[
{
"Currency": "BTC",
"CurrencyName": "Bitcoin",
"LastUpdate": datetime.datetime(2022, 11, 6, 16, 50, 23, 277000, tzinfo=datetime.timezone.utc),
"Status": "Good",
"Type": "Crypto",
"LastBlock": 762000,
"Version": "210100",
"Connections": 10,
"RequiredConfirmations": 2
},
{
"Currency": "ETH",
"CurrencyName": "Ethereum",
"LastUpdate": datetime.datetime(2022, 11, 6, 16, 50, 26, 327000, tzinfo=datetime.timezone.utc),
"Status": "Good",
"Type": "Crypto",
"LastBlock": 15912281,
"Version": "v1.10.23-omnibus-b38477ec",
"Connections": 100,
"RequiredConfirmations": 20
}
]
```
---
<a name="place_order"></a>
#### place_order(target_currency: str, reference_currency: str, order_type: str, amount: float, limit_price: float, amount_in_reference_currency: bool = False)
Places an order in a given market.
* **Parameters**
* **target_currency** – Market listing currency.
* **reference_currency** – Market reference currency.
* **order_type** – Order type. Possible values: “buy”, “sell”. Use constants defined in
`sxc_api_client.constants.OrderTypes`.
* **amount** – Order amount in listing currency.
* **limit_price** – Optional price in reference currency. If None then order is executed at market price.
* **amount_in_reference_currency** – True if order amount is in reference currency; defaults to False.
* **Returns**
Order code.
* **Example**
```python
>>> from sxc_api_client.constants import OrderTypes
>>> client.place_order('ETH', 'BTC', OrderTypes.BUY, 0.01, 0.068344600)
'64065725'
```
---
<a name="cancel_order"></a>
#### cancel_order(order_code: str)
Cancels a given order.
* **Parameters**
* **order_code** – Order code.
* **Returns**
None
* **Example**
```python
>>> client.cancel_order('60000000')
```
---
<a name="cancel_market_orders"></a>
#### cancel_market_orders(target_currency: str, reference_currency: str)
Cancels all orders in a given market.
* **Parameters**
* **target_currency** – Market listing currency.
* **reference_currency** – Market reference currency.
* **Returns**
None
* **Example**
```python
>>> client.cancel_market_orders('ETC', 'BTC')
```
---
<a name="list_pending_orders"></a>
#### list_pending_orders()
Lists all pending orders.
* **Returns**
Pending orders.
* **Example**
```python
>>> client.list_pending_orders()
[
{
'Code': '163421247',
'Type': 'sell',
'Amount': 218.55863408,
'OriginalAmount': 218.55863408,
'LimitPrice': 0.000001356,
'ListingCurrency': 'CRW',
'ReferenceCurrency': 'BTC',
'DateAdded': datetime.datetime(2022, 1, 28, 0, 1, 9, 767000, tzinfo=datetime.timezone.utc)
}, {
'Code': '199829936',
'Type': 'buy',
'Amount': 0.05507009,
'OriginalAmount': 0.05507009,
'LimitPrice': 0.002609047,
'ListingCurrency': 'LTC',
'ReferenceCurrency': 'BTC',
'DateAdded': datetime.datetime(2022, 10, 11, 6, 0, 48, 797000, tzinfo=datetime.timezone.utc)
}
]
```
---
<a name="get_order"></a>
#### get_order(code: str)
Gets a given order.
* **Parameters**
* **code** – Order code to get.
* **Returns**
Order data.
* **Example**
```python
>>> client.get_order('203765246')
{
'Code': '203765246',
'Type': 'sell',
'Amount': 0.16542518,
'PendingAmount': 0.0,
'LimitPrice': 0.00226272,
'ListingCurrency': 'DASH',
'ReferenceCurrency': 'BTC',
'Status': 'executed',
'DateAdded': datetime.datetime(2022, 11, 7, 15, 30, 10, 460000, tzinfo=datetime.timezone.utc)
}
```
---
<a name="list_orders_by_codes"></a>
#### list_orders_by_codes(codes: list[str], page_index: int = 0, page_size: int = 50)
Lists orders by given codes.
* **Parameters**
* **codes** – Orders codes.
* **page_index** – Page index.
* **page_size** – Page size. Maximum: 50.
* **Returns**
Orders data.
* **Example**
```python
>>> client.list_orders_by_codes(['203579724', '203587899'])
[
{
'Code': '203579724',
'Type': 'sell',
'Amount': 0.04181474,
'PendingAmount': 0.0,
'LimitPrice': 0.002148943,
'ListingCurrency': 'DASH',
'ReferenceCurrency': 'BTC',
'Status': 'executed',
'DateAdded': datetime.datetime(2022, 11, 6, 10, 45, 25, 930000, tzinfo=datetime.timezone.utc)
},
{
'Code': '203587899',
'Type': 'buy',
'Amount': 1115.3285116,
'PendingAmount': 1115.3285116,
'LimitPrice': 2.61e-07,
'ListingCurrency': 'GRC',
'ReferenceCurrency': 'BTC',
'Status': 'booked',
'DateAdded': datetime.datetime(2022, 11, 6, 12, 0, 9, 107000, tzinfo=datetime.timezone.utc)
}
]
```
---
<a name="generate_new_address"></a>
#### generate_new_address(currency: str)
Generates a new address for a given cryptocurrency.
* **Parameters**
* **currency** – Currency for which a new address will be generated.
* **Returns**
New address data.
* **Example**
```python
>>> client.generate_new_address('ETH')
{
'Id': 987654321,
'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b27'
}
```
---
<a name="list_addresses"></a>
#### list_addresses(currency: str, page_index: int = 0, page_size: int = 50)
Lists addresses of a given currency.
* **Parameters**
* **currency** – Currency code.
* **page_index** – Page index.
* **page_size** – Page size. Maximum: 50.
* **Returns**
Addresses data.
* **Example**
```python
>>> client.list_addresses('ETH')
{
'TotalElements': 2,
'Result': [
{
'Id': 987654321,
'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b27'
}, {
'Id': 987654322,
'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b28'
}
]
}
```
---
<a name="generate_ln_invoice"></a>
#### generate_ln_invoice(currency: str, amount: float)
Generates a new Lightning Network invoice for a given cryptocurrency. Permission required: Generate New Address
* **Parameters**
* **currency** – Currency code for which the invoice will be generated. Possible values: ‘BTC’, ‘LTC’.
* **amount** – Invoice amount.
* **Returns**
Payment request (invoice).
* **Example**
```python
>>> client.generate_ln_invoice('LTC', 1.0)
'lnbc20m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6...'
```
---
<a name="withdraw"></a>
#### withdraw(currency: str, destination: str, destination_type: int, amount: float)
Withdraws to a given address. Permission required: “Withdraw”.
* **Parameters**
* **currency** – Currency code to withdraw.
* **destination** – The withdrawal destination address.
* **destination_type** – Destination type. Use constants defined in
`sxc_api_client.constants.WithdrawalDestinationTypes`.
* **amount** – Amount to withdraw. Destination address will receive this amount minus fees.
* **Returns**
Withdrawal data.
* **Example**
```python
>>> from sxc_api_client.constants import WithdrawalDestinationTypes
>>> client.withdraw('LTC', 'SOME_ADDRESS_HERE', WithdrawalDestinationTypes.CRYPTO_ADDRESS, 0.5)
{
'Status': 'ok',
'Max': 0.29,
'MaxDaily': 1.0,
'MovementId': 9876543210
}
```
---
<a name="list_balances"></a>
#### list_balances()
Lists non-zero balances for all currencies
* **Returns**
Balances.
* **Example**
```python
>>> client.list_balances()
[
{
"Currency": "BIGO",
"Deposited": 300.0,
"Available": 300.0,
"Unconfirmed": 0.0
},
{
"Currency": "BTC",
"Deposited": 0.1,
"Available": 0.05,
"Unconfirmed": 0.0
}
]
```
---
<a name="list_transactions"></a>
#### list_transactions(target_currency: Optional[str] = None, transaction_type: str = 'transactions', optional_filter: Optional[int] = None, page_index: int = 0, page_size: int = 50)
Lists all transactions. Permission required: “List Balances”.
* **Parameters**
* **target_currency** – Currency code.
* **transaction_type** – Transaction type. Refer to class `sxc_api_client.constants.TransactionTypes`
to get all allowed values. Note: If “transactions” is provided then trade transactions and buy fees are
returned; if you want to get fee for sell order then you have to make a request once again with
target_currency = reference currency and filter a response by relevant “TradeId”.
Though if transaction type “tradesbyordercode” is provided then the request will return matching trade
transaction along with buy/sell trade fees.
* **optional_filter** – Optional filter. Possible values: the order code if transaction type is
“tradesbyordercode”; the address ID if transaction type is “depositsbyaddressid”.
* **page_index** – Page index.
* **page_size** – Page size. Maximum: 50.
* **Returns**
Transactions data.
* **Example**
```python
>>> from sxc_api_client.constants import TransactionTypes
>>> client.list_transactions(transaction_type=TransactionTypes.TRADES_BY_ORDER_CODE,
... optional_filter='199077234')
{
'TotalElements': 2,
'Result': [
{
'Date': datetime.datetime(2022, 11, 1, 20, 40, 5, 57000, tzinfo=datetime.timezone.utc),
'CurrencyCode': 'DASH',
'Amount': 0.0,
'TotalBalance': 30.91380084,
'Type': 'tradefee',
'Status': 'confirmed',
'Address': None,
'Hash': None,
'Price': 0.0,
'OtherAmount': 0.0,
'OtherCurrency': None,
'OrderCode': None,
'TradeId': 19737424,
'MovementId': None,
'TransactionId': 491636439
}, {
'Date': datetime.datetime(2022, 11, 1, 20, 40, 5, 57000, tzinfo=datetime.timezone.utc),
'CurrencyCode': 'DASH',
'Amount': 0.00000195,
'TotalBalance': 30.91380084,
'Type': 'trade',
'Status': 'confirmed',
'Address': None,
'Hash': None,
'Price': 0.002017385,
'OtherAmount': 0.000000003,
'OtherCurrency': 'BTC',
'OrderCode': '199077234',
'TradeId': 19737424,
'MovementId': None,
'TransactionId': 491636438
}
]
}
```
Raw data
{
"_id": null,
"home_page": "",
"name": "sxc-api-client",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "api client,crypto,cryptocurrency,exchange,southxchange,trading",
"author": "",
"author_email": "Dmitry Kosilov <amidflice@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/54/81/2688f6e56fa52dad5aec0da548ce124b76642d6685aece85a19b1a28cb8b/sxc_api_client-0.1.8.tar.gz",
"platform": null,
"description": "# SouthXChange Python API Client\n`SxcAPIClient` is a simple Python wrapper around SouthXChange API implementing all the requests as described in [official documentation](https://main.southxchange.com/Content/swagger/ui/?urls.primaryName=API%20v4#/).\nAPI v4 is supported so far.\n\n## Table of contents\n* [Quick start](#quick_start)\n * [Installation](#installation)\n * [Usage](#usage)\n* [Requests](#requests)\n * [Public data](#public_data)\n * [List markets](#list_markets)\n * [Get price](#get_price)\n * [List prices](#list_prices)\n * [List market history](#list_market_history)\n * [List market history by granularity](#scroll_market_history_by_granularity)\n * [List order book](#list_order_book)\n * [List trades](#list_trades)\n * [List fees](#list_fees)\n * [Private data](#private_data)\n * [Get user info](#get_user_info)\n * [List wallets](#list_wallets)\n * [Place order](#place_order)\n * [Cancel order](#cancel_order)\n * [Cancel market orders](#cancel_market_orders)\n * [List pending orders](#list_pending_orders)\n * [Get order](#get_order)\n * [List orders by codes](#list_orders_by_codes)\n * [Generate new address](#generate_new_address)\n * [List addresses](#list_addresses)\n * [Generate Lightning Network invoice](#generate_ln_invoice)\n * [Withdraw](#withdraw)\n * [List balances](#list_balances)\n * [List transactions](#list_transactions)\n\n\n<a name=\"quick_start\"></a>\n## Quick start\n<a name=\"installation\"></a>\n### Installation\n```commandline\npip3 install sxc-api-client\n```\n<a name=\"usage\"></a>\n### Usage\nQuerying publicly available data is as simple as that:\n```python\nfrom sxc_api_client import SxcApiClient\nclient = SxcApiClient()\nmarkets = client.list_markets()\n```\nIf you are going to have a deal with private data as well (i.e. bound to a specific account) you have to provide your API access and secret keys. Optionally, you may also specify connect/read timeout in seconds either as a single value or a tuple; by default, timeout is set to 10 seconds.\n```python\nfrom sxc_api_client import SxcApiClient\nclient = SxcApiClient(\"your_access_key\", \"your_secret_key\", timeout=5)\norders = client.list_pending_orders()\n```\n\n<a name=\"requests\"></a>\n## Requests\n<a name=\"public_data\"></a>\n### Public data\n\n---\n\n<a name=\"list_markets\"></a>\n#### list_markets()\nLists all markets.\n* **Returns**\n\n Markets.\n\n\n* **Example**\n```python\n>>> client.list_markets()\n[\n ['DASH', 'BTC', 5],\n ['LTC', 'BTC', 7]\n]\n```\n\n---\n\n<a name=\"get_price\"></a>\n#### get_price(target_currency: str, reference_currency: str)\nGets price of a given market.\n\n\n* **Parameters** \n * **target_currency** \u2013 Listing currency code.\n * **reference_currency** \u2013 Reference currency code.\n\n\n* **Returns**\n\n Price of a given market.\n\n\n* **Example**\n\n\n```python\n>>> client.get_price('CRW', 'BTC')\n{\n 'Bid': 0.067417841,\n 'Ask': 0.067808474,\n 'Last': 0.068148556,\n 'Variation24Hr': -8.38,\n 'Volume24Hr': 2.63158984\n}\n```\n\n---\n\n<a name=\"list_prices\"></a>\n#### list_prices()\nLists prices of all markets.\n\n\n* **Returns**\n\n Market prices.\n\n\n* **Example**\n```python\n>>> client.list_prices()\n[\n {\n 'Market': 'DASH/BTC',\n 'Bid': 0.002117966,\n 'Ask': 0.002131398,\n 'Last': 0.002142643,\n 'Variation24Hr': 0.25,\n 'Volume24Hr': 5.6542005\n },\n {\n 'Market': 'LTC/BTC',\n 'Bid': 0.00328,\n 'Ask': 0.003289038,\n 'Last': 0.003324991,\n 'Variation24Hr': -0.38,\n 'Volume24Hr': 33.92142523\n }\n]\n```\n\n---\n\n<a name=\"list_market_history\"></a>\n#### list_market_history(target_currency: str, reference_currency: str, start_ts: int | float, end_ts: int | float, periods: int)\nList market history between two dates. Please keep in mind it is strongly recommended to pass `start_ts` and\n`end_ts` so that difference between them is aliquot to `periods`; otherwise unexpected data may be\nreturned without any warning. Besides, as a rule of thumb consider that the value of statement\n`(end_ts - start) / periods` should be equal to one of the values defined in\n`sxc_api_client.constants.MarketHistoryIntervals`. Hopefully those restrictions will be eliminated in\nSouthXChange API.\n\n\n* **Parameters** \n * **target_currency** \u2013 Listing currency code.\n * **reference_currency** \u2013 Reference currency code.\n * **start_ts** \u2013 Start timestamp from January 1, 1970.\n * **end_ts** \u2013 End timestamp from January 1, 1970.\n * **periods** \u2013 Number of periods to get. Limited to 500; if bigger value is provided API silently resets it to 500.\n\n\n* **Returns**\n\n Market history.\n\n\n* **Example**\n\n```python\n>>> client.list_market_history('ETH', 'BTC',\n... datetime(2022, 1, 1, tzinfo=timezone.utc).timestamp(),\n... datetime(2022, 1, 3, tzinfo=timezone.utc).timestamp(),\n... 2)\n[\n {\n 'Date': datetime.datetime(2022, 1, 1, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.079624402,\n 'PriceLow': 0.077018168,\n 'PriceOpen': 0.079384817,\n 'PriceClose': 0.077232438,\n 'Volume': 0.70592287\n }, {\n 'Date': datetime.datetime(2022, 1, 2, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.080658164,\n 'PriceLow': 0.077179415,\n 'PriceOpen': 0.077232438,\n 'PriceClose': 0.079098818,\n 'Volume': 0.59452678\n }, {\n 'Date': datetime.datetime(2022, 1, 3, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.080598789,\n 'PriceLow': 0.067001496,\n 'PriceOpen': 0.079098818,\n 'PriceClose': 0.079553838,\n 'Volume': 2.18225486\n }\n]\n```\n\n---\n\n<a name=\"scroll_market_history_by_granularity\"></a>\n#### scroll_market_history_by_granularity(target_currency: str, reference_currency: str, start_ts: int | float, end_ts: int | float, granularity: int, \\*\\*kwargs)\nList market history between two dates with given granularity. A handier version of\n`sxc_api_client.client.SxcApiClient.list_market_history()`\n\n\n* **Parameters**\n * **target_currency** \u2013 Listing currency code.\n * **reference_currency** \u2013 Reference currency code.\n * **start_ts** \u2013 Start timestamp from January 1, 1970.\n * **end_ts** \u2013 End timestamp from January 1, 1970.\n * **granularity** \u2013 Interval in seconds. Use constants defined in `sxc_api_client.constants.MarketHistoryIntervals`.\n * **strict_mode** \u2013 Raise exception if granularity in a response does not match the given one.\n Such a case is possible when either (1) arbitrary granularity (except values defined in\n `sxc_api_client.constants.MarketHistoryIntervals`) is provided or (2) currency pair was listed on the market\n after the given start_ts or (3) end_ts is relatively far in the future. Defaults to True.\n\n\n* **Returns**\n\n Market history.\n\n\n* **Example**\n\n```python\n>>> from sxc_api_client.constants import MarketHistoryIntervals\n>>> for m in client.scroll_market_history_by_granularity(\n... 'ETH', 'BTC',\n... datetime(2022, 1, 1, tzinfo=timezone.utc).timestamp(),\n... datetime(2022, 1, 3, tzinfo=timezone.utc).timestamp(),\n... MarketHistoryIntervals.DAYS_1):\n... print(m)\n[\n {\n 'Date': datetime.datetime(2022, 1, 1, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.079624402,\n 'PriceLow': 0.077018168,\n 'PriceOpen': 0.079384817,\n 'PriceClose': 0.077232438,\n 'Volume': 0.70592287\n }, {\n 'Date': datetime.datetime(2022, 1, 2, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.080658164,\n 'PriceLow': 0.077179415,\n 'PriceOpen': 0.077232438,\n 'PriceClose': 0.079098818,\n 'Volume': 0.59452678\n }, {\n 'Date': datetime.datetime(2022, 1, 3, 0, 0, tzinfo=datetime.timezone.utc),\n 'PriceHigh': 0.080598789,\n 'PriceLow': 0.067001496,\n 'PriceOpen': 0.079098818,\n 'PriceClose': 0.079553838,\n 'Volume': 2.18225486\n }\n]\n```\n\n---\n\n<a name=\"list_order_book\"></a>\n#### list_order_book(target_currency: str, reference_currency: str)\nLists order book of a given market.\n\n\n* **Parameters** \n * **target_currency** \u2013 Listing currency code.\n * **reference_currency** \u2013 Reference currency code.\n\n\n* **Returns**\n\n Order book.\n\n\n* **Example**\n```python\n>>> client.list_order_book('ETH', 'BTC')\n{\n \"BuyOrders\": [\n {\n \"Index\": 0,\n \"Amount\": 0.00147298,\n \"Price\": 0.067889252\n },\n {\n \"Index\": 1,\n \"Amount\": 0.1979,\n \"Price\": 0.067889251\n }\n ],\n \"SellOrders\": [\n {\n \"Index\": 0,\n \"Amount\": 0.01103169,\n \"Price\": 0.068781728\n },\n {\n \"Index\": 1,\n \"Amount\": 0.2991489,\n \"Price\": 0.06901085\n }\n ]\n}\n```\n\n---\n\n<a name=\"list_trades\"></a>\n#### list_trades(target_currency: str, reference_currency: str)\nLists the latest trades in a given market.\n\n\n* **Parameters**\n * **target_currency** \u2013 Listing currency code.\n * **reference_currency** \u2013 Reference currency code.\n\n\n* **Returns**\n\n Latest trades.\n\n\n* **Example**\n```python\n>>> client.list_trades('ETH', 'BTC')\n[\n {\n 'At': 1668012323,\n 'Amount': 0.38359823,\n 'Price': 0.068379352,\n 'Type': 'buy'\n }, {\n 'At': 1668012304,\n 'Amount': 0.45140177,\n 'Price': 0.068379352,\n 'Type': 'buy'\n }\n]\n```\n\n---\n\n<a name=\"list_fees\"></a>\n#### list_fees()\nGet general information about currencies, markets, trader levels and their fees.\n\n\n* **Returns**\n\n Fees data.\n\n\n* **Example**\n```python\n>>> client.list_fees()\n{\n \"Currencies\": [\n {\n \"Code\": \"BTC\",\n \"Name\": \"Bitcoin\",\n \"Precision\": 9,\n \"MinDeposit\": 0.00005,\n \"DepositFeeMin\": 0.0,\n \"MinWithdraw\": 0.0002,\n \"WithdrawFee\": 0.0,\n \"WithdrawFeeMin\": 0.00015,\n \"MinAmount\": 0.000000001\n },\n {\n \"Code\": \"ETH\",\n \"Name\": \"Ethereum\",\n \"Precision\": 8,\n \"MinDeposit\": 0.01,\n \"DepositFeeMin\": 0.0,\n \"MinWithdraw\": 0.007,\n \"WithdrawFee\": 0.0,\n \"WithdrawFeeMin\": 0.0035,\n \"MinAmount\": 0.0\n }\n ],\n \"Markets\": [\n {\n \"ListingCurrencyCode\": \"ETH\",\n \"ReferenceCurrencyCode\": \"BTC\",\n \"MakerFee\": 0.001,\n \"TakerFee\": 0.003,\n \"MinOrderListingCurrency\": None,\n \"PricePrecision\": None\n }\n ],\n \"TraderLevels\": [\n {\n \"Name\": \"TraderLevel1\",\n \"MinVolumeAmount\": 0.1,\n \"MinVolumeCurrency\": \"BTC\",\n \"MakerFeeRebate\": 0.2,\n \"TakerFeeRebate\": 0.2\n },\n {\n \"Name\": \"TraderLevel2\",\n \"MinVolumeAmount\": 0.5,\n \"MinVolumeCurrency\": \"BTC\",\n \"MakerFeeRebate\": 0.4,\n \"TakerFeeRebate\": 0.4\n }\n ]\n}\n```\n\n<a name=\"private_data\"></a>\n### Private data\n\n---\n\n<a name=\"get_user_info\"></a>\n#### get_user_info()\nGet user information (level). Use `SxcApiClient.list_fees()` to retrieve actual fees applicable to user\nlevel.\n\n\n* **Returns**\n\n User information.\n\n\n* **Example**\n```python\n>>> client.get_user_info()\n{'TraderLevel': 'TraderLevel1'}\n```\n\n---\n\n<a name=\"list_wallets\"></a>\n#### list_wallets()\nRetrieves the status for all wallets.\n\n\n* **Returns**\n\n Wallets information.\n\n\n* **Example**\n```python\n>>> client.list_wallets()\n[\n {\n \"Currency\": \"BTC\",\n \"CurrencyName\": \"Bitcoin\",\n \"LastUpdate\": datetime.datetime(2022, 11, 6, 16, 50, 23, 277000, tzinfo=datetime.timezone.utc),\n \"Status\": \"Good\",\n \"Type\": \"Crypto\",\n \"LastBlock\": 762000,\n \"Version\": \"210100\",\n \"Connections\": 10,\n \"RequiredConfirmations\": 2\n },\n {\n \"Currency\": \"ETH\",\n \"CurrencyName\": \"Ethereum\",\n \"LastUpdate\": datetime.datetime(2022, 11, 6, 16, 50, 26, 327000, tzinfo=datetime.timezone.utc),\n \"Status\": \"Good\",\n \"Type\": \"Crypto\",\n \"LastBlock\": 15912281,\n \"Version\": \"v1.10.23-omnibus-b38477ec\",\n \"Connections\": 100,\n \"RequiredConfirmations\": 20\n }\n]\n```\n\n---\n\n<a name=\"place_order\"></a>\n#### place_order(target_currency: str, reference_currency: str, order_type: str, amount: float, limit_price: float, amount_in_reference_currency: bool = False)\nPlaces an order in a given market.\n\n\n* **Parameters**\n * **target_currency** \u2013 Market listing currency.\n * **reference_currency** \u2013 Market reference currency.\n * **order_type** \u2013 Order type. Possible values: \u201cbuy\u201d, \u201csell\u201d. Use constants defined in\n `sxc_api_client.constants.OrderTypes`.\n * **amount** \u2013 Order amount in listing currency.\n * **limit_price** \u2013 Optional price in reference currency. If None then order is executed at market price.\n * **amount_in_reference_currency** \u2013 True if order amount is in reference currency; defaults to False.\n\n\n* **Returns**\n\n Order code.\n\n\n* **Example**\n\n```python\n>>> from sxc_api_client.constants import OrderTypes\n>>> client.place_order('ETH', 'BTC', OrderTypes.BUY, 0.01, 0.068344600)\n'64065725'\n```\n\n---\n\n<a name=\"cancel_order\"></a>\n#### cancel_order(order_code: str)\nCancels a given order.\n\n\n* **Parameters**\n\n * **order_code** \u2013 Order code.\n\n\n* **Returns**\n\n None\n\n\n* **Example**\n\n\n```python\n>>> client.cancel_order('60000000')\n```\n\n---\n\n<a name=\"cancel_market_orders\"></a>\n#### cancel_market_orders(target_currency: str, reference_currency: str)\nCancels all orders in a given market.\n\n\n* **Parameters**\n * **target_currency** \u2013 Market listing currency.\n * **reference_currency** \u2013 Market reference currency.\n\n\n* **Returns**\n\n None\n\n\n* **Example**\n```python\n>>> client.cancel_market_orders('ETC', 'BTC')\n```\n\n---\n\n<a name=\"list_pending_orders\"></a>\n#### list_pending_orders()\nLists all pending orders.\n\n\n* **Returns**\n\n Pending orders.\n\n\n* **Example**\n```python\n>>> client.list_pending_orders()\n[\n {\n 'Code': '163421247',\n 'Type': 'sell',\n 'Amount': 218.55863408,\n 'OriginalAmount': 218.55863408,\n 'LimitPrice': 0.000001356,\n 'ListingCurrency': 'CRW',\n 'ReferenceCurrency': 'BTC',\n 'DateAdded': datetime.datetime(2022, 1, 28, 0, 1, 9, 767000, tzinfo=datetime.timezone.utc)\n }, {\n 'Code': '199829936',\n 'Type': 'buy',\n 'Amount': 0.05507009,\n 'OriginalAmount': 0.05507009,\n 'LimitPrice': 0.002609047,\n 'ListingCurrency': 'LTC',\n 'ReferenceCurrency': 'BTC',\n 'DateAdded': datetime.datetime(2022, 10, 11, 6, 0, 48, 797000, tzinfo=datetime.timezone.utc)\n }\n]\n```\n\n---\n\n<a name=\"get_order\"></a>\n#### get_order(code: str)\nGets a given order.\n\n\n* **Parameters**\n * **code** \u2013 Order code to get.\n\n\n* **Returns**\n\n Order data.\n\n\n* **Example**\n```python\n>>> client.get_order('203765246')\n{\n 'Code': '203765246',\n 'Type': 'sell',\n 'Amount': 0.16542518,\n 'PendingAmount': 0.0,\n 'LimitPrice': 0.00226272,\n 'ListingCurrency': 'DASH',\n 'ReferenceCurrency': 'BTC',\n 'Status': 'executed',\n 'DateAdded': datetime.datetime(2022, 11, 7, 15, 30, 10, 460000, tzinfo=datetime.timezone.utc)\n}\n```\n\n---\n\n<a name=\"list_orders_by_codes\"></a>\n#### list_orders_by_codes(codes: list[str], page_index: int = 0, page_size: int = 50)\nLists orders by given codes.\n\n\n* **Parameters** \n * **codes** \u2013 Orders codes.\n * **page_index** \u2013 Page index.\n * **page_size** \u2013 Page size. Maximum: 50.\n\n\n* **Returns**\n\n Orders data.\n\n\n* **Example**\n```python\n>>> client.list_orders_by_codes(['203579724', '203587899'])\n[\n {\n 'Code': '203579724',\n 'Type': 'sell',\n 'Amount': 0.04181474,\n 'PendingAmount': 0.0,\n 'LimitPrice': 0.002148943,\n 'ListingCurrency': 'DASH',\n 'ReferenceCurrency': 'BTC',\n 'Status': 'executed',\n 'DateAdded': datetime.datetime(2022, 11, 6, 10, 45, 25, 930000, tzinfo=datetime.timezone.utc)\n },\n {\n 'Code': '203587899',\n 'Type': 'buy',\n 'Amount': 1115.3285116,\n 'PendingAmount': 1115.3285116,\n 'LimitPrice': 2.61e-07,\n 'ListingCurrency': 'GRC',\n 'ReferenceCurrency': 'BTC',\n 'Status': 'booked',\n 'DateAdded': datetime.datetime(2022, 11, 6, 12, 0, 9, 107000, tzinfo=datetime.timezone.utc)\n }\n]\n```\n\n---\n\n<a name=\"generate_new_address\"></a>\n#### generate_new_address(currency: str)\nGenerates a new address for a given cryptocurrency.\n\n\n* **Parameters**\n * **currency** \u2013 Currency for which a new address will be generated.\n\n\n* **Returns**\n\n New address data.\n\n\n* **Example**\n```python\n>>> client.generate_new_address('ETH')\n{\n 'Id': 987654321,\n 'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b27'\n}\n```\n\n---\n\n<a name=\"list_addresses\"></a>\n#### list_addresses(currency: str, page_index: int = 0, page_size: int = 50)\nLists addresses of a given currency.\n\n\n* **Parameters** \n * **currency** \u2013 Currency code.\n * **page_index** \u2013 Page index.\n * **page_size** \u2013 Page size. Maximum: 50.\n\n\n* **Returns**\n\n Addresses data.\n\n\n* **Example**\n```python\n>>> client.list_addresses('ETH')\n{\n 'TotalElements': 2,\n 'Result': [\n {\n 'Id': 987654321,\n 'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b27'\n }, {\n 'Id': 987654322,\n 'Address': '0xce8b37b3b3e0347ff22a884e0df7f3b225112b28'\n }\n ]\n}\n```\n\n---\n\n<a name=\"generate_ln_invoice\"></a>\n#### generate_ln_invoice(currency: str, amount: float)\nGenerates a new Lightning Network invoice for a given cryptocurrency. Permission required: Generate New Address\n\n\n* **Parameters** \n * **currency** \u2013 Currency code for which the invoice will be generated. Possible values: \u2018BTC\u2019, \u2018LTC\u2019.\n * **amount** \u2013 Invoice amount.\n\n\n* **Returns**\n\n Payment request (invoice).\n\n\n* **Example**\n```python\n>>> client.generate_ln_invoice('LTC', 1.0)\n'lnbc20m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6...'\n```\n\n---\n\n<a name=\"withdraw\"></a>\n#### withdraw(currency: str, destination: str, destination_type: int, amount: float)\nWithdraws to a given address. Permission required: \u201cWithdraw\u201d.\n\n\n* **Parameters** \n * **currency** \u2013 Currency code to withdraw.\n * **destination** \u2013 The withdrawal destination address.\n * **destination_type** \u2013 Destination type. Use constants defined in\n `sxc_api_client.constants.WithdrawalDestinationTypes`.\n * **amount** \u2013 Amount to withdraw. Destination address will receive this amount minus fees.\n\n\n* **Returns**\n\n Withdrawal data.\n\n\n* **Example**\n\n```python\n>>> from sxc_api_client.constants import WithdrawalDestinationTypes\n>>> client.withdraw('LTC', 'SOME_ADDRESS_HERE', WithdrawalDestinationTypes.CRYPTO_ADDRESS, 0.5)\n{\n 'Status': 'ok',\n 'Max': 0.29,\n 'MaxDaily': 1.0,\n 'MovementId': 9876543210\n}\n```\n\n---\n\n<a name=\"list_balances\"></a>\n#### list_balances()\nLists non-zero balances for all currencies\n\n\n* **Returns**\n\n Balances.\n\n\n* **Example**\n```python\n>>> client.list_balances()\n[\n {\n \"Currency\": \"BIGO\",\n \"Deposited\": 300.0,\n \"Available\": 300.0,\n \"Unconfirmed\": 0.0\n },\n {\n \"Currency\": \"BTC\",\n \"Deposited\": 0.1,\n \"Available\": 0.05,\n \"Unconfirmed\": 0.0\n }\n]\n```\n\n---\n\n<a name=\"list_transactions\"></a>\n#### list_transactions(target_currency: Optional[str] = None, transaction_type: str = 'transactions', optional_filter: Optional[int] = None, page_index: int = 0, page_size: int = 50)\nLists all transactions. Permission required: \u201cList Balances\u201d.\n\n\n* **Parameters** \n * **target_currency** \u2013 Currency code.\n * **transaction_type** \u2013 Transaction type. Refer to class `sxc_api_client.constants.TransactionTypes`\n to get all allowed values. Note: If \u201ctransactions\u201d is provided then trade transactions and buy fees are\n returned; if you want to get fee for sell order then you have to make a request once again with\n target_currency = reference currency and filter a response by relevant \u201cTradeId\u201d.\n Though if transaction type \u201ctradesbyordercode\u201d is provided then the request will return matching trade\n transaction along with buy/sell trade fees.\n * **optional_filter** \u2013 Optional filter. Possible values: the order code if transaction type is\n \u201ctradesbyordercode\u201d; the address ID if transaction type is \u201cdepositsbyaddressid\u201d.\n * **page_index** \u2013 Page index.\n * **page_size** \u2013 Page size. Maximum: 50.\n\n\n* **Returns**\n\n Transactions data.\n\n\n* **Example**\n\n```python\n>>> from sxc_api_client.constants import TransactionTypes\n>>> client.list_transactions(transaction_type=TransactionTypes.TRADES_BY_ORDER_CODE,\n... optional_filter='199077234')\n{\n 'TotalElements': 2,\n 'Result': [\n {\n 'Date': datetime.datetime(2022, 11, 1, 20, 40, 5, 57000, tzinfo=datetime.timezone.utc),\n 'CurrencyCode': 'DASH',\n 'Amount': 0.0,\n 'TotalBalance': 30.91380084,\n 'Type': 'tradefee',\n 'Status': 'confirmed',\n 'Address': None,\n 'Hash': None,\n 'Price': 0.0,\n 'OtherAmount': 0.0,\n 'OtherCurrency': None,\n 'OrderCode': None,\n 'TradeId': 19737424,\n 'MovementId': None,\n 'TransactionId': 491636439\n }, {\n 'Date': datetime.datetime(2022, 11, 1, 20, 40, 5, 57000, tzinfo=datetime.timezone.utc),\n 'CurrencyCode': 'DASH',\n 'Amount': 0.00000195,\n 'TotalBalance': 30.91380084,\n 'Type': 'trade',\n 'Status': 'confirmed',\n 'Address': None,\n 'Hash': None,\n 'Price': 0.002017385,\n 'OtherAmount': 0.000000003,\n 'OtherCurrency': 'BTC',\n 'OrderCode': '199077234',\n 'TradeId': 19737424,\n 'MovementId': None,\n 'TransactionId': 491636438\n }\n ]\n}\n```",
"bugtrack_url": null,
"license": "",
"summary": "SouthXChange API Client",
"version": "0.1.8",
"project_urls": {
"Bug Tracker": "https://github.com/amid-flice/sxc-api-client/issues",
"Homepage": "https://github.com/amid-flice/sxc-api-client"
},
"split_keywords": [
"api client",
"crypto",
"cryptocurrency",
"exchange",
"southxchange",
"trading"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d9f16fa5e6ec0d77ab0cc6fa56d9e9d77cf80d1a59e66059f659fad43e4468e9",
"md5": "fcb5fc60adc54a6465ef36f5a362b381",
"sha256": "ad37438ede4912d8342d1824a1a4bd30fa8aee85919dc4e12c0f9c1baeb1ada8"
},
"downloads": -1,
"filename": "sxc_api_client-0.1.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fcb5fc60adc54a6465ef36f5a362b381",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 16864,
"upload_time": "2023-08-21T09:45:46",
"upload_time_iso_8601": "2023-08-21T09:45:46.102254Z",
"url": "https://files.pythonhosted.org/packages/d9/f1/6fa5e6ec0d77ab0cc6fa56d9e9d77cf80d1a59e66059f659fad43e4468e9/sxc_api_client-0.1.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "54812688f6e56fa52dad5aec0da548ce124b76642d6685aece85a19b1a28cb8b",
"md5": "cc3395c26bb66de89193de0f4e3bac7a",
"sha256": "3411311c33c675619ebf728de6f794cc113efe3012758fd322c68c485d8e1da5"
},
"downloads": -1,
"filename": "sxc_api_client-0.1.8.tar.gz",
"has_sig": false,
"md5_digest": "cc3395c26bb66de89193de0f4e3bac7a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 20238687,
"upload_time": "2023-08-21T09:45:52",
"upload_time_iso_8601": "2023-08-21T09:45:52.309218Z",
"url": "https://files.pythonhosted.org/packages/54/81/2688f6e56fa52dad5aec0da548ce124b76642d6685aece85a19b1a28cb8b/sxc_api_client-0.1.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-21 09:45:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "amid-flice",
"github_project": "sxc-api-client",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "sxc-api-client"
}