Skip to main content

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

woocommerceaio-1.1.4.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

woocommerceaio-1.1.4-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

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

Hashes for woocommerceaio-1.1.4.tar.gz
Algorithm Hash digest
SHA256 dae28f7c8903da6a0014fbcf20044b1039e612a4235b0fbcef7a2070a72219c8
MD5 da4b1c2176a71d4a1e101e2997f245d3
BLAKE2b-256 9c2e40f1248bc77d94f5b30922895f0f1b9f6ba980bdcfa6a9fc746231fe0e57

See more details on using hashes here.

File details

Details for the file woocommerceaio-1.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for woocommerceaio-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 23db4eff3e5be4e07d23936d1fb55574441d481d0d27508aec9caa813974769f
MD5 f0b6ecb755e22791eff6364eed9bb422
BLAKE2b-256 a569f9c39dfcb5ff74dead048911e2ed486e69c8be6684ca21ccb6c4199198f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page