Skip to main content

An interface to the Ecwid shopping platform API

Project description

pyecwid

Python wrapper for Ecwid REST API

Requirements

  1. API token and Store ID from Ecwid CP Apps -> My Apps
  2. Python 3
  3. Requests

Installation

$ python -m pip install pyecwid

ChangeLog

BREAKING: Major changes (when 0.1.x released)

  • Broke up the different endpoints (Customers, Orders, Products, etc) into different classes that accept the EcwidAPI (or EcwidAPIMock) object.
  • Added Mixins that can be used to quickly implement new Endpoints without duplicating code.
  • Added an Ecwid class that contains properties with each endpoint initialised.
  • Some methods have changed names.

Todo

  • Reimplement product_variations and other mixins for subobjects of items.

Implemented Features

  • Standard possible commands for endpoints:
    • add({item}) - add item (dict)

    • delete(id) - remove item

    • get_by_id(id) - get item details (returns a single {item})

    • update(id, {values}) - update item with values (dict)

    • Getting multiple items: Will deal with pagination and return a list of "items" node.
      Optional: pass "collate_items=False" to any of these commands and full results will be returned. Note - pagination will not be handled automatically. Useful to find total counts etc.

      • get() - get all items
      • get_by_keyword('keyword') - search for items by keyword
      • get_by_params({params}) - search for items by paramaters (dict)
Endpoint Status Standard commands Extra commands
Coupons alpha - currently unable to test add, delete, get, get_by_id, get_by_params, update
Customers alpha - currently unable to test add, delete, get, get_by_id, get_by_keyword, update get_by_email, get_by_name
Orders alpha - currently unable to test add, delete, get, get_by_id, get_by_params, update
Products working add, delete, get, get_by_id, get_by_keyword, get_by_params, update
ProductTypes (classes) working add, delete, get, get_by_id, update

Simple Initialisation

from pyecwid import Ecwid
ecwid = Ecwid(api_token, store_id)

EcwidAPI Arguments

Argument Required Description Default Value
api_token Yes The secret_ or public_ token for your store.
store_id Yes The ID of your store.
skip_test No True/False. Skips test call to API during initiaization (used in tests) False
base_url No Replace the hard coded URL
Note: format includes {0} for store_id
'https://app.ecwid.com/api/v3/{0}/'

Sample: Search products and pprint

from pprint import pprint
from pyecwid import Ecwid

ecwid = Ecwid('public_ASDF', '1234567')

# Search by Keyword
items = ecwid.products.get_by_keyword('sunglasses')
pprint(items)

# Search by Paramaters
params = { 'createdFrom': '2016-04-25', 'createdTo': '2020-12-25' }
items = ecwid.products.get_by_params(params)
pprint(items)

# Get all products and use lambda function to search results
items = ecwid.products.get()
usb_list = list(filter(lambda items: 'USB' in items.get('name'), items))
pprint(usb_list)

Sample: Add item (remove first if it exists) then modify details.

from pyecwid import Ecwid
import json, time

ecwid = Ecwid('public_ASDF', '1234567')

# Import an item from JSON file
with open('./samplejson/product.json') as json_file:
    new_product = json.load(json_file)

# Check if item already exists.  If so remove.
product_search = ecwid.products.get_by_keyword(new_product['sku'])
if len(product_search) > 0:
    exisiting_item_id = product_search[0]['id']
    result = ecwid.products.delete(exisiting_item_id)
    if result == 1:
        print("Existing item removed")
        time.sleep(2)


new_item_id = ecwid.products.add(new_product)

updated_data = {'name': 'My New Product'}

result = ecwid.products.update(new_item_id, updated_data)
print(result.text)

Sample: Just importing required endpoints

from pyecwid import EcwidAPI
from pyecwid.endpoints import Products

API_TOKEN = 'secret_ASDF'
API_STORE = '1234567'

ecwid = EcwidAPI(API_TOKEN, API_STORE)
products = Products(ecwid)

results = products.get()

Debugging: Use EcwidAPIMock for console logging calls.

from pyecwid import EcwidMock

ecwid = EcwidMock(API_TOKEN, API_STORE)
result = ecwid.products.get()

OR

from pyecwid import EcwidAPIMock
from pyecwid.endpoints import Products

ecwid = EcwidAPIMock(API_TOKEN, API_STORE)
products = Products(ecwid)

results = products.get()

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

pyecwid-0.1.1.tar.gz (17.1 kB view hashes)

Uploaded Source

Built Distribution

pyecwid-0.1.1-py3-none-any.whl (18.8 kB view hashes)

Uploaded Python 3

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