Python Magento 2 REST API Wrapper
Project description
A Python package that wraps and extends the Magento 2 REST API
About MyMagento
📝 What’s MyMagento? |
---|
MyMagento is a highly interconnected package that wraps and extends the Magento 2 REST API, providing a more intuitive and user-friendly interface to access and update your store. |
MyMagento simplifies interaction with the Magento 2 REST API
If you’ve worked with the Magento 2 API, you’ll know that not all endpoints are created equally.
MyMagento aims to streamline your workflow by simplifying a variety of commonly needed API operations.
Main Components
💻 The Client |
---|
|
🔍 The SearchQuery and Subclasses |
---|
|
🧠 The Model Subclasses |
---|
|
Available Endpoints
MyMagento is compatible with every API endpoint
Endpoints are wrapped with a Model and SearchQuery subclass as follows:
Endpoint |
Client Shortcut |
SearchQuery Subclass |
Model Subclass |
---|---|---|---|
orders |
|||
orders/items |
|||
invoices |
|||
products |
|||
products/attributes |
|||
categories |
|||
customers |
|||
endpoint |
Client.search('endpoint') |
…
⚙ Installing MyMagento
To install using pip:
pip install my-magento
Please note that MyMagento requires Python >= 3.10
…
📚 Documentation
Full documentation can be found on ReadTheDocs
QuickStart: Login with MyMagento
MyMagento uses the Client class to handle all interactions with the API.
💡 Tip |
---|
See Get a Magento 2 REST API Token With MyMagento for full details on generating an access token |
Setting the Login Credentials
To generate an ACCESS_TOKEN you’ll need to authenticate() your USER_CREDENTIALS.
Creating a Client requires a domain, username, and password at minimum.
>>> domain = 'website.com'
>>> username ='username'
>>> password = 'password'
If you’re using a local installation of Magento you’ll need to set local=True. Your domain should look like this:
>>> domain = '127.0.0.1/path/to/magento'
…
Getting a Client
Option 1: Initialize a Client Directly
from magento import Client
>>> api = Client(domain, username, password, **kwargs)
Option 2: Call get_api()
import magento
>>> api = magento.get_api(**kwargs)
get_api() takes the same keyword arguments as the Client
If the domain, username, or password are missing, it will attempt to use the following environment variables:
import os
os.environ['MAGENTO_DOMAIN'] = domain
os.environ['MAGENTO_USERNAME']= username
os.environ['MAGENTO_PASSWORD']= password
…
Getting an ACCESS_TOKEN
Unless you specify login=False, the Client will automatically call authenticate() once initialized:
>> api.authenticate()
|[ MyMagento | website_username ]|: Authenticating username on website.com...
|[ MyMagento | website_username ]|: Logged in to username
Performing a search()
The Client.search() method lets you execute() a query on any API endpoint
It creates a SearchQuery for the endpoint, allowing you to retrieve data about
An individual item (ex. by_id())
A list of items (ex. by_list())
Any search criteria you desire (see Building Custom Search Queries)
…
Example: search() an endpoint by_id()
# Query the "invoices" endpoint (also: api.invoices)
>>> api.search("invoices").by_id(1)
<Magento Invoice: "#000000001"> for <Magento Order: "#000000001" placed on 2022-11-01 03:27:33>
Example: search() an endpoint by_list()
# Retrieve invoices from a list of invoice ids
>>> ids = list(range(1,101))
>>> api.invoices.by_list("entity_id", ids)
[<Magento Invoice: "#000000001"> for <Magento Order: "#000000001" placed on 2022-11-01 03:27:33>, ...]
…
Search Results: The Model Classes
The result of any SearchQuery will be parsed and wrapped by a Model class in the magento.models subpackage.
These classes make the API response data easier to work with.
They also provide endpoint-specific methods to update store data and search for related items.
Example: Retrieving every Order containing a Product
Let’s retrieve a Product using by_sku()
>>> product = api.products.by_sku("24-MB01")
We can search for orders containing this product in multiple ways:
# Using the Product itself
>>> product.get_orders()
[<Magento Order: "#000000003" placed on 2022-12-21 08:09:33>, ... ]
# Using an OrderSearch
>>> api.orders.by_product(product)
>>> api.orders.by_product_id(product.id)
>>> api.orders.by_sku(product.sku)
[<Magento Order: "#000000003" placed on 2022-12-21 08:09:33>, ... ]
Example: Retrieving all Products and Invoices for a Category
>>> category = api.categories.by_name("Watches")
>>> category.get_products()
>>> category.get_invoices()
[<Magento Product: 24-MG04>, <Magento Product: 24-MG01>, <Magento Product: 24-MG03>, ... ]
[<Magento Invoice: "#000000004"> for <Magento Order: "#000000004" placed on 2022-11-14 03:27:33>, ... ]
Example: Updating the Thumbnail MediaEntry of a Product
# Update product thumbnail label on specific store view
>>> product.thumbnail.set_alt_text("bonjour", scope="FR")
>>> print(product.thumbnail)
<MediaEntry 3417 for <Magento Product: 24-MB01>: bonjour>
…
💡 Tip: Set the Store Scope |
---|
If you have multiple store views, a store_code can be specified when retrieving/updating data
|
…
Building Custom Search Queries
In addition to the predefined methods, you can also build your own queries
Simply add_criteria(), restrict_fields(), and execute() the search
The since() and until() methods allow you to further filter your query by date
📋 Example: Retrieve Orders Over $50 Placed Since the Start of 2023 |
---|
|
📋 Example: Retrieve Orders Over $50 Placed Since the Start of 2023 |
---|
|
…
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file my-magento-2.2.0.tar.gz
.
File metadata
- Download URL: my-magento-2.2.0.tar.gz
- Upload date:
- Size: 40.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0629c41c6117ef7f72741a925ae1cc9bb6356939a28efe036a9f1a4ee3aec103 |
|
MD5 | 836fa1a99b5c69eae2d6e74974ccc8ca |
|
BLAKE2b-256 | 8ca026f55a697790174454e70ff262b698bec2797eee896e7babc7cc965660b1 |
File details
Details for the file my_magento-2.2.0-py3-none-any.whl
.
File metadata
- Download URL: my_magento-2.2.0-py3-none-any.whl
- Upload date:
- Size: 42.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c037f152ea055738269fedc363508063d10affed4c89afd52e73e6074a69f50a |
|
MD5 | d5a1c507421f3fbb7936dcc637df0ab0 |
|
BLAKE2b-256 | ea599e177696838e178087c1f50188faa14e2de82a1c1790e082eda3d8b85b1d |