Amazon SP-API Python Client
Project description
amazon-sp-api-python
This is a python version of the Amazon Seller API https://developer-docs.amazon.com/sp-api/docs/
We use the openapi generator https://openapi-generator.tech/ to convert the amazon sp-api swagger api models https://github.com/amzn/selling-partner-api-models.git into a python package.
This creates a requests based API with pydantic types. Awesome!
This project consists of tweaks I had to make to aws auth schemes to get things working with the openapi generator client, the generator script that creates the models and a little bit of documentation. Nothing fancy.
Prerequisites
- python 3.9+
- amazon seller api credentials. See the docs https://developer-docs.amazon.com/sp-api/docs/
Installation
pip install amazon-sp-api-python
Usage
import os
import dotenv
dotenv.load_dotenv()
from py_sp_api.generated.productPricingV0 import ProductPricingApi, SPAPIClient as PricingClient
from py_sp_api.generated.notifications import NotificationsApi, SPAPIClient as NotificationsClient
from py_sp_api import SPAPIConfig
def test_get_pricing(asin: str, marketplace_id="ATVPDKIKX0DER"):
# demonstrates a grantful "refresh_token" request (the default)
spapi_config = SPAPIConfig(
client_id=os.getenv("SPAPI_CLIENT_ID"),
client_secret=os.getenv("SPAPI_CLIENT_SECRET"),
refresh_token=os.getenv("SPAPI_TOKEN"),
region="NA",
)
product_pricing = ProductPricingApi(PricingClient(spapi_config))
response = product_pricing.get_pricing(marketplace_id=marketplace_id, item_type="Asin", asins=[asin])
print("pricing", response)
def test_notifications():
# demomonstrates a grantless request (required for some operations like creating a notification destination)
grantless_config = SPAPIConfig(
client_id=os.getenv("SPAPI_CLIENT_ID"),
client_secret=os.getenv("SPAPI_CLIENT_SECRET"),
refresh_token=os.getenv("SPAPI_TOKEN"),
region="NA",
grant_type="client_credentials",
scope="sellingpartnerapi::notifications",
)
notifications = NotificationsApi(NotificationsClient(grantless_config))
response = notifications.get_destinations()
print("destinations", response)
test_notifications()
test_get_pricing(asin="B0DP7GSWC8")
Development
This is a poetry project so do the normal poetry install type things to set up your environment.
We use a Makefile for build automation.
make cleanremoves the generated codemake generategenerates the schemasmake testruns unit testsmake lint-fixfixes linting issues and checks compliance with linting standards
Project Structure
.
├── Makefile - make scripts
├── README.md - this file
├── notebooks
│ └── api_test.ipynb - example usage
├── poetry.lock
├── pyproject.toml
├── selling-partner-api-models - git submodule from <https://github.com/amzn/selling-partner-api-models.git>
├── scripts
│ └── generate_schemas.py - script to generate api
├── tests - unit tests. (just enough to make sure things generated without error)
└── src
└── py_sp_api
├── auth - copied from selling-partner-api-models/clients/sellingpartner-api-aa-python/auth
│ ├── LwaException.py - unchanged
│ ├── LwaExceptionErrorCode.py - unchanged
│ ├── LwaRequest.py - import paths modified
│ └── credentials.py - tweaked to allow grantless operations
|── base_client.py - client that gets copied into each package in generated/
└── generated - the generated api files created when generate_schemas.py is run
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file amazon_sp_api_python-0.1.1.tar.gz.
File metadata
- Download URL: amazon_sp_api_python-0.1.1.tar.gz
- Upload date:
- Size: 2.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.11 Linux/6.8.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
093f3e228ff86cc2cc50f27c534152a842b0d9535c5a2e306344f4c4d1af8c2d
|
|
| MD5 |
d18a1297ae08383ac20e83e9b0b1dcbb
|
|
| BLAKE2b-256 |
395b9e81a9984ddc92bb416b604696e5f4a43acc497f8b515b7c20385e28d776
|
File details
Details for the file amazon_sp_api_python-0.1.1-py3-none-any.whl.
File metadata
- Download URL: amazon_sp_api_python-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.11 Linux/6.8.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e604659f8a4355e531799fc827e71a9c1bd9f2deace6227858e817cedb36cd7d
|
|
| MD5 |
93daafae3fb20082e13b80ea670a2e91
|
|
| BLAKE2b-256 |
0e5f6a3dcdb0739f84dadfad1a664cc97ad928b95117ba0c1a7303f7c93b6679
|