Pure async Amazon Ads API v1 client — Sponsored Products, Sponsored Brands, Sponsored Display
Project description
async-amazon-ads-api-v1
Pure async Amazon Ads API v1 client — Sponsored Products, Sponsored Brands, Sponsored Display.
Installation
pip install async-amazon-ads-api-v1
# 或
uv add async-amazon-ads-api-v1
Redis 缓存支持:
pip install "async-amazon-ads-api-v1[redis]"
# 或
uv add "async-amazon-ads-api-v1[redis]"
Quick Start
所有 API 方法仅接受 Pydantic model 实例,不支持 dict。
使用 Access Token(直接提供)
import asyncio
from async_amazon_ads_api_v1 import AmazonAdsConfig, Region, SPClient
from async_amazon_ads_api_v1.models.sp import SPQueryCampaignRequest
async def main() -> None:
config = AmazonAdsConfig(
access_token="your-access-token",
client_id="your-client-id",
region=Region.NA,
)
body = SPQueryCampaignRequest(
adProductFilter={"include": ["SPONSORED_PRODUCTS"]},
stateFilter={"include": ["ENABLED"]},
)
async with SPClient(config) as sp:
resp = await sp.campaigns.query(body)
print(resp.model_dump_json(indent=2))
asyncio.run(main())
使用 Refresh Token(自动续期)
import asyncio
from async_amazon_ads_api_v1 import AmazonAdsConfig, Region, SPClient
from async_amazon_ads_api_v1.models.sp import SPQueryCampaignRequest
async def main() -> None:
config = AmazonAdsConfig(
access_token="your-access-token", # 可选,提供后直接使用
client_id="your-client-id",
refresh_token="your-refresh-token", # access_token 过期后自动刷新
client_secret="your-client-secret",
region=Region.NA,
)
body = SPQueryCampaignRequest(
adProductFilter={"include": ["SPONSORED_PRODUCTS"]},
stateFilter={"include": ["ENABLED"]},
)
async with SPClient(config) as sp:
resp = await sp.campaigns.query(body)
print(resp.model_dump_json(indent=2))
asyncio.run(main())
从环境变量加载
export AMAZON_ACCESS_TOKEN=...
export AMAZON_CLIENT_ID=...
export AMAZON_REFRESH_TOKEN=... # 可选,用于自动续期
export AMAZON_CLIENT_SECRET=... # 可选,refresh_token 时需要
export AMAZON_REGION=na # na | eu | fe,默认 na
export AMAZON_PROFILE_ID=... # 可选
from async_amazon_ads_api_v1.config.loader import from_toml
config = from_toml()
Environment Variables
| 变量 | 必填 | 说明 |
|---|---|---|
AMAZON_ACCESS_TOKEN |
条件 | OAuth bearer token(或使用 refresh_token 自动获取) |
AMAZON_CLIENT_ID |
条件 | OAuth client ID(使用 refresh_token 时必填) |
AMAZON_REFRESH_TOKEN |
否 | OAuth refresh token,用于自动续期 |
AMAZON_CLIENT_SECRET |
条件 | OAuth client secret(使用 refresh_token 时必填) |
AMAZON_REGION |
否 | na | eu | fe,默认 na |
AMAZON_PROFILE_ID |
否 | 广告主 profile ID |
AMAZON_TOKEN_URL |
否 | 自定义 token 端点 |
AMAZON_TOKEN_CACHE_DIR |
否 | 文件缓存目录(默认系统临时目录) |
AMAZON_CACHE_BACKEND |
否 | file | redis,默认 file |
AMAZON_REDIS_URL |
否 | Redis 连接 URL(使用 redis 缓存时需要) |
AMAZON_ENDPOINT_NA |
否 | 覆盖 NA 端点 |
AMAZON_ENDPOINT_EU |
否 | 覆盖 EU 端点 |
AMAZON_ENDPOINT_FE |
否 | 覆盖 FE 端点 |
Token Management
SDK 内置 OAuth token 生命周期管理,支持自动续期和缓存:
from async_amazon_ads_api_v1 import AmazonAdsConfig, Region
# 自动续期 + 文件缓存(默认)
config = AmazonAdsConfig(
client_id="your-client-id",
client_secret="your-client-secret",
refresh_token="your-refresh-token",
region=Region.NA,
)
# 自动续期 + Redis 缓存
config = AmazonAdsConfig(
client_id="your-client-id",
client_secret="your-client-secret",
refresh_token="your-refresh-token",
region=Region.NA,
cache_backend="redis",
redis_url="redis://localhost:6379",
)
API Reference
SPClient — Sponsored Products
| 资源 | 方法 |
|---|---|
client.campaigns |
create(), query(), update(), delete() |
client.ad_groups |
create(), query(), update(), delete() |
client.ads |
create(), query(), update(), delete() |
client.targets |
create(), query(), update(), delete() |
client.ad_extensions |
create(), query(), update() |
SBClient — Sponsored Brands
| 资源 | 方法 |
|---|---|
client.campaigns |
create(), query(), update(), delete() |
client.ad_groups |
create(), query(), update(), delete() |
client.ads |
create(), query(), update(), delete() |
client.targets |
create(), query(), update(), delete() |
client.ad_extensions |
create(), query(), update() |
client.advertising_deals |
create(), query(), update(), delete() |
client.advertising_deal_targets |
create(), query(), delete() |
client.branded_keywords_pricings |
create() |
client.keyword_reservation_validations |
create() |
client.recommendations |
create() |
client.recommendation_types |
query() |
SDClient — Sponsored Display
| 资源 | 方法 |
|---|---|
client.campaigns |
create(), query(), update(), delete() |
client.ad_groups |
create(), query(), update(), delete() |
client.ads |
create(), query(), update(), delete() |
client.targets |
create(), query(), update(), delete() |
Legacy / 非标准 API
以下资源类不遵循 /adsApi/v1 通用 CRUD 模式,需要单独实例化:
BudgetRules — 预算规则关联
SP、SB、SD 各自独立的资源类:
from async_amazon_ads_api_v1.client.legacy import SPBudgetRules, SBBudgetRules, SDBudgetRules
sp_rules = SPBudgetRules(ctx)
await sp_rules.create_budget_rules(request)
await sp_rules.update_budget_rules(request)
Portfolios — 投资组合
from async_amazon_ads_api_v1.client.legacy import Portfolios
from async_amazon_ads_api_v1.models.legacy.portfolios import UpdatePortfoliosRequestContent
pf = Portfolios(ctx)
resp = await pf.list()
await pf.update(UpdatePortfoliosRequestContent(portfolios=[...]))
SBOptimizationRules — SB 优化规则 (Beta)
from async_amazon_ads_api_v1.client.legacy import SBOptimizationRules
from async_amazon_ads_api_v1.models.legacy import SBEntityFilter, SBListOptimizationRulesRequest
rules = SBOptimizationRules(ctx)
request = SBListOptimizationRulesRequest(
entityFilter=SBEntityFilter(entityType="CAMPAIGN", entityId="..."),
)
await rules.list_optimization_rules(request)
await rules.disassociate_optimization_rules(request)
SDOptimizationRules — SD 优化规则 (Beta)
from async_amazon_ads_api_v1.client.legacy import SDOptimizationRules
rules = SDOptimizationRules(ctx)
await rules.list_optimization_rules("ad-group-id")
await rules.disassociate_optimization_rules("ad-group-id", request)
SDCreatives — SD 创意
from async_amazon_ads_api_v1.client.legacy import SDCreatives
creatives = SDCreatives(ctx)
await creatives.create([{...}])
License
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 async_amazon_ads_api_v1-0.6.5.tar.gz.
File metadata
- Download URL: async_amazon_ads_api_v1-0.6.5.tar.gz
- Upload date:
- Size: 77.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d51cd55b1456fe59a915668af030c1e64f20ba995e3a6ed53e8689da14df1764
|
|
| MD5 |
3a2d23d7f94b02578a5aa6a3ad0e0c45
|
|
| BLAKE2b-256 |
967ddff60b152431cb8262518d7502e9ecb9c945d363775bb0327d8def7cd4fc
|
Provenance
The following attestation bundles were made for async_amazon_ads_api_v1-0.6.5.tar.gz:
Publisher:
publish.yml on apollosuite/async_amazon_ads_api_v1
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
async_amazon_ads_api_v1-0.6.5.tar.gz -
Subject digest:
d51cd55b1456fe59a915668af030c1e64f20ba995e3a6ed53e8689da14df1764 - Sigstore transparency entry: 2211548536
- Sigstore integration time:
-
Permalink:
apollosuite/async_amazon_ads_api_v1@4cb804de20b2ca31f679389a728393d385300279 -
Branch / Tag:
refs/tags/v0.6.5 - Owner: https://github.com/apollosuite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4cb804de20b2ca31f679389a728393d385300279 -
Trigger Event:
release
-
Statement type:
File details
Details for the file async_amazon_ads_api_v1-0.6.5-py3-none-any.whl.
File metadata
- Download URL: async_amazon_ads_api_v1-0.6.5-py3-none-any.whl
- Upload date:
- Size: 128.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ec13fa3db33839ed5820ee6bd75291332f837d41d5fceaff624d2080284060c
|
|
| MD5 |
7b4c87c48eb200fe0026e6f890914661
|
|
| BLAKE2b-256 |
52a2e67f6a7d6bda0090c2c1b1217e9e573e5245419c839087969792eac31659
|
Provenance
The following attestation bundles were made for async_amazon_ads_api_v1-0.6.5-py3-none-any.whl:
Publisher:
publish.yml on apollosuite/async_amazon_ads_api_v1
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
async_amazon_ads_api_v1-0.6.5-py3-none-any.whl -
Subject digest:
6ec13fa3db33839ed5820ee6bd75291332f837d41d5fceaff624d2080284060c - Sigstore transparency entry: 2211548575
- Sigstore integration time:
-
Permalink:
apollosuite/async_amazon_ads_api_v1@4cb804de20b2ca31f679389a728393d385300279 -
Branch / Tag:
refs/tags/v0.6.5 - Owner: https://github.com/apollosuite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4cb804de20b2ca31f679389a728393d385300279 -
Trigger Event:
release
-
Statement type: