Skip to main content

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.

Metadata

Release files for woocommerceaio 1.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for woocommerceaio 1.1.4
File Size Uploaded
woocommerceaio-1.1.4.tar.gz 6.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for woocommerceaio 1.1.4
File Interpreter ABI Platform
woocommerceaio-1.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 14.9 kB

Release files / woocommerceaio-1.1.4.tar.gz

Download URL woocommerceaio-1.1.4.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dae28f7c8903da6a0014fbcf20044b1039e612a4235b0fbcef7a2070a72219c8
BLAKE2b-256 checksum
How to use checksums
9c2e40f1248bc77d94f5b30922895f0f1b9f6ba980bdcfa6a9fc746231fe0e57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.17

Release files / woocommerceaio-1.1.4-py3-none-any.whl

Download URL woocommerceaio-1.1.4-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23db4eff3e5be4e07d23936d1fb55574441d481d0d27508aec9caa813974769f
BLAKE2b-256 checksum
How to use checksums
a569f9c39dfcb5ff74dead048911e2ed486e69c8be6684ca21ccb6c4199198f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.17

Release history Release notifications | RSS feed

This release

1.1.4 This release

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page