An async Python wrapper for the WooCommerce REST API
Project description
woocommerceaio
An async Python wrapper for the WooCommerce REST API based on httpx.
This is an unofficial fork of the WooCommerce-provided Python client, originally created by Claudio Sanches.
The main difference between woocommerceaio
and the official client resides in the use of the async HTTP library httpx instead of requests.
Other differences include:
- Support for retries.
- Type hints.
- And more to come (as I use the library I need to add more features)
Installation
pip install woocommerceaio
Getting started
Generate API credentials (Consumer Key & Consumer Secret) following this instructions at http://woocommerce.github.io/woocommerce-rest-api-docs/#rest-api-keys.
Check out the WooCommerce API endpoints and data that can be manipulated in http://woocommerce.github.io/woocommerce-rest-api-docs/.
Setup
from woocommerceaio import API
wcapi = API(
url="http://example.com",
consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
version="wc/v3"
)
Options
Option | Type | Required | Description |
---|---|---|---|
url |
string |
yes | Your Store URL, example: http://woo.dev/ |
consumer_key |
string |
yes | Your API secret key |
consumer_secret |
string |
yes | Your API consumer secret |
version |
string |
no | API version, default is wc/v3 |
timeout |
integer |
no | Connection timeout, default is 5 |
verify_ssl |
bool |
no | Verify SSL when connect, use this option as False when need to test with self-signed certificates |
query_string_auth |
bool |
no | Force Basic Authentication as query string when True and using under HTTPS, default is False |
user_agent |
string |
no | Set a custom User-Agent, default is woocommerceaio/<version> |
oauth_timestamp |
integer |
no | Custom timestamp for requests made with oAuth1.0a |
wp_api |
bool |
no | Set to False in order to use the legacy WooCommerce API (deprecated) |
compatibility_mode |
bool |
no | Defaults to False . Set to True to bypass some servers' limitations processing HTTP verbs. |
Methods
You can interact with the WooCommerce API using via the exposed methods get()
, post()
, put()
, delete()
, options()
.
- All methods
the following parameters.
Params | Type | Description |
---|---|---|
endpoint |
string |
WooCommerce API endpoint, example: customers or order/12 |
data |
dictionary |
Data that will be converted to JSON |
**kwargs |
dictionary |
Accepts params , also other httpx arguments (see next section) |
kwargs params
woocommerceaio
allows you to pass any httpx
arguments as kwargs
params. This is useful if you want to customize headers, timeouts, and other request parameters. For a list of available params, refer to the httpx documentation.
Additionally, woocommerceaio
provides the following custom kwargs
params:
Params | Type | Description |
---|---|---|
max_retries |
bool |
Maximum number of retries on failed requests. Default is 3 |
retry_backoff |
float |
Backoff time to apply between attempts after the second try (most errors are resolved immediately by a second try without a delay). Default is 0.5 seconds. This value will be multiplied by a factor of two for each consequent retry. So the default delay sequence will be 0.5 , 1 , 2 , 4 , 8 etc. seconds |
Response
All methods will return an httpx Response
object. For more information on how to use this object, refer to the httpx documentation.
Examples
Retrieving store products
>>> r = await wcapi.get("products")
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=UTF-8'
>>> r.encoding
'UTF-8'
>>> r.text
u'{"products":[{"title":"Flying Ninja","id":70,...' // Json text
>>> r.json()
{u'products': [{u'sold_individually': False,... // Dictionary data
Making requests with params
from woocommerceaio import API
async def example():
wcapi = API(
url="http://example.com",
consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
version="wc/v3"
)
# Force delete example.
response = await wcapi.delete("products/100", params={"force": True})
print(response.json())
# Query example.
response = await wcapi.get("products", params={"per_page": 20})
print(response.json())
if __name__ == "__main__":
import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(example())
Changelog
See CHANGELOG.md
.
Project details
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 woocommerceaio-1.1.4.tar.gz
.
File metadata
- Download URL: woocommerceaio-1.1.4.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dae28f7c8903da6a0014fbcf20044b1039e612a4235b0fbcef7a2070a72219c8 |
|
MD5 | da4b1c2176a71d4a1e101e2997f245d3 |
|
BLAKE2b-256 | 9c2e40f1248bc77d94f5b30922895f0f1b9f6ba980bdcfa6a9fc746231fe0e57 |
File details
Details for the file woocommerceaio-1.1.4-py3-none-any.whl
.
File metadata
- Download URL: woocommerceaio-1.1.4-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23db4eff3e5be4e07d23936d1fb55574441d481d0d27508aec9caa813974769f |
|
MD5 | f0b6ecb755e22791eff6364eed9bb422 |
|
BLAKE2b-256 | a569f9c39dfcb5ff74dead048911e2ed486e69c8be6684ca21ccb6c4199198f5 |