Work-in-Progress api wrapper for Moysklad JSON API 1.02
Create JSON API client:
from pymoysklad.json.client import JSONApi
client = JSONApi(("admin@company", "examplePassword"))
# or by using token
# client = JSONApi("your_token_goes_here")Access one of an API entities:
products = client.product.list_product()List method will return CollectionAnswer object, from that you can access rows or get an request meta\context
print(products.rows)
print(products.meta)
print(products.context)Get method will return object itself by his UUID
product = client.product.get_product(UUID("10cb9bc1-1544-4245-bb79-fece6074544f"))Delete method will delete object by his UUID
client.product.delete_product(UUID("10cb9bc1-1544-4245-bb79-fece6074544f"))Create method will create and return newly created object or multiple objects, if you provide a list of them
from pymoysklad.json.entity.product import Product
product = client.product.create_product(Product(name="test"))Edit method will edit and return edited object
edited_product = client.product.edit_product(UUID("10cb9bc1-1544-4245-bb79-fece6074544f"), Product(name="edited name", description="i can edit any field, by just providing it in this product object"))Mass delete method will mass delete objects using theirs metas
products_to_delete = client.product.list_product(search="DELETEME")
metas = [product.meta for product in products_to_delete.rows]
client.product.mass_delete_product(metas)To sort a collection just provide order keyword argument in list method.
Order argument can contain list of tuples (order=[("name", "desc"), ("code", "asc")]) to provide sorting direction or simply be a list of strings (order=["name", "code"] to use default ascending sorting:
sorted_products = client.product.list_product(order=["price", ("name", "desc")])To filter a collection provide filter keyword argument in list method.
Filter argument should be a tuple of strings with format described in documentation (filter=('name!=Товар', 'price>=100'))
filtered_products = client.product.list_product(filter=('name!=Товар', 'price>=100'))To search in a collection provide search keyword argument in list method.
Search argument should be a string.
searched_products = client.products.list_product(search="Капибара")To expand some field in request use expand keyword argument in list method.
Expand argument should be a string, containing field name, multiple field names delimited with commas or nested fields delimited by dots. demand.agent,organization
products_with_images = client.product.list_product(expand="images")To limit and offset collection use limit and offset keyword arguments
Just create an issue and I will try to resolve it ASAP. Yup, even add some entity that i didn't added before