Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pyecwid

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pyecwid

An interface to the Ecwid shopping platform API

  • 0.1.1
  • PyPI
  • Socket score

Maintainers
1

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)
EndpointStatusStandard commandsExtra commands
Couponsalpha - currently unable to testadd, delete, get, get_by_id, get_by_params, update
Customersalpha - currently unable to testadd, delete, get, get_by_id, get_by_keyword, updateget_by_email, get_by_name
Ordersalpha - currently unable to testadd, delete, get, get_by_id, get_by_params, update
Productsworkingadd, delete, get, get_by_id, get_by_keyword, get_by_params, update
ProductTypes (classes)workingadd, delete, get, get_by_id, update

Simple Initialisation

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

EcwidAPI Arguments

ArgumentRequiredDescriptionDefault Value
api_tokenYesThe secret_ or public_ token for your store.
store_idYesThe ID of your store.
skip_testNoTrue/False. Skips test call to API during initiaization (used in tests)False
base_urlNoReplace 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()

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc