python-amazon-ad-api 1.5.6__tar.gz → 1.5.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_amazon_ad_api-1.5.6/python_amazon_ad_api.egg-info → python_amazon_ad_api-1.5.8}/PKG-INFO +2 -1
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/README.md +1 -0
- python_amazon_ad_api-1.5.8/ad_api/api/eligibility.py +100 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/__init__.py +2 -0
- python_amazon_ad_api-1.5.8/ad_api/api/v1/recommendation_types.py +48 -0
- python_amazon_ad_api-1.5.8/ad_api/version.py +1 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8/python_amazon_ad_api.egg-info}/PKG-INFO +2 -1
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/SOURCES.txt +1 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/setup.cfg +1 -1
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/setup.py +1 -1
- python_amazon_ad_api-1.5.6/ad_api/api/eligibility.py +0 -72
- python_amazon_ad_api-1.5.6/ad_api/version.py +0 -1
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/LICENSE +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/account.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/account_budgets.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/advertising_test_account.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/attribution.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/audiences.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/billing.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/brand_metrics.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/creative_assets.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/exports.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/history.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/insights.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/invoices.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/localization.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/manager_accounts.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/metadata.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/portfolios.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/portfolios_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/profiles.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/reports.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/ad_creatives_v4.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/ad_groups_v4.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/ads_v4.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/benchmarks.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/brands.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/budget_rules.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/campaigns_v4.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/forecast.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/keywords.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/landing_page_asins.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/media.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/migration.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/negative_keywords.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/optimization_rules.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/reports.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/stores.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/targeting_categories.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/themes.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/brand_safety.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/budget_rules.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/creatives.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/forecast.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/product_ads.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/reports.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/snapshots.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/ad_groups_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/bid_recommendations_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/budget_initial_recommendation.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/budget_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/budget_rules.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/budget_rules_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaign_consolidated_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaign_negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaign_negative_targets.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaigns_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaings_optimization.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/negative_product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/product_ads_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/product_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/ranked_keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/schedule_based_bid_optimization.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/stores.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/stream.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/ad_associations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/ad_extensions.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/ads.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/advertiser_accounts.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_store_edition_publish_versions.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_store_editions.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_store_pages.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_stores.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/geo_locations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/label_object_associations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/labels.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/manager_accounts.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/reports.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/selling_accounts.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/targets.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/validation_configurations.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/access_token_client.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/access_token_response.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/credentials.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/exceptions.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/__init__.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/api_response.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/base_client.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/client.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/config.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/credential_provider.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/exceptions.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/helpers.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/marketplaces.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/utils.py +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/pyproject.toml +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/dependency_links.txt +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/requires.txt +0 -0
- {python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/top_level.txt +0 -0
{python_amazon_ad_api-1.5.6/python_amazon_ad_api.egg-info → python_amazon_ad_api-1.5.8}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-amazon-ad-api
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.8
|
|
4
4
|
Summary: Python wrapper for the Amazon Advertising API
|
|
5
5
|
Home-page: https://github.com/denisneuf/python-amazon-ad-api
|
|
6
6
|
Author: Daniel Alvaro
|
|
@@ -318,6 +318,7 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
318
318
|
* [Selling Accounts](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/selling_accounts.html#ad_api.api.v1.SellingAccounts.SellingAccounts.query_selling_accounts)
|
|
319
319
|
* [Label Object Associations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/label_object_associations.html#ad_api.api.v1.LabelObjectAssociations.LabelObjectAssociations.query_label_object_associations)
|
|
320
320
|
* [Geo Locations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/geo_locations.html#ad_api.api.v1.GeoLocations.GeoLocations.create_geo_locations)
|
|
321
|
+
* [Recommendation Types](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/recommendation_types.html#ad_api.api.v1.RecommendationTypes.RecommendationTypes.query_sb_recommendation_types)
|
|
321
322
|
|
|
322
323
|
|
|
323
324
|
### [Modules Available Sponsored Products](https://python-amazon-ad-api.readthedocs.io/en/latest/sp.html)
|
|
@@ -290,6 +290,7 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
290
290
|
* [Selling Accounts](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/selling_accounts.html#ad_api.api.v1.SellingAccounts.SellingAccounts.query_selling_accounts)
|
|
291
291
|
* [Label Object Associations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/label_object_associations.html#ad_api.api.v1.LabelObjectAssociations.LabelObjectAssociations.query_label_object_associations)
|
|
292
292
|
* [Geo Locations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/geo_locations.html#ad_api.api.v1.GeoLocations.GeoLocations.create_geo_locations)
|
|
293
|
+
* [Recommendation Types](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/recommendation_types.html#ad_api.api.v1.RecommendationTypes.RecommendationTypes.query_sb_recommendation_types)
|
|
293
294
|
|
|
294
295
|
|
|
295
296
|
### [Modules Available Sponsored Products](https://python-amazon-ad-api.readthedocs.io/en/latest/sp.html)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Eligibility(Client):
|
|
6
|
+
r"""Product and program eligibility for Amazon ads."""
|
|
7
|
+
|
|
8
|
+
@sp_endpoint('/eligibility/product/list', method='POST')
|
|
9
|
+
def get_eligibility(self, **kwargs) -> ApiResponse:
|
|
10
|
+
r"""
|
|
11
|
+
get_eligibility(body: (dict, str)) -> ApiResponse
|
|
12
|
+
|
|
13
|
+
Product eligibility for a set of ASINs. Only products sold by the
|
|
14
|
+
merchant behind the profile are accepted. The request carries ASINs,
|
|
15
|
+
but several SKUs may come back for one ASIN, and an ineligible
|
|
16
|
+
product comes back with the reasons rather than being left out.
|
|
17
|
+
|
|
18
|
+
body: | REQUIRED
|
|
19
|
+
'**adType**': *string* [dsp, sb, sd, sp] default sp
|
|
20
|
+
'**productDetailsList**': list of {asin, sku}
|
|
21
|
+
'**locale**': *string*
|
|
22
|
+
"""
|
|
23
|
+
body = Utils.convert_body(kwargs.pop('body'), wrap=False)
|
|
24
|
+
return self._request(kwargs.pop('path'), data=body, params=kwargs)
|
|
25
|
+
|
|
26
|
+
@sp_endpoint('/eligibility/product/list', method='POST')
|
|
27
|
+
def get_eligibility_assistant(self, asin_list: list, sku_list: list = None,
|
|
28
|
+
ad_type: str = 'sp', locale: str = 'en-GB',
|
|
29
|
+
**kwargs) -> ApiResponse:
|
|
30
|
+
r"""
|
|
31
|
+
get_eligibility_assistant(asin_list, sku_list=None, ad_type='sp', locale='en-GB')
|
|
32
|
+
|
|
33
|
+
Builds the body for get_eligibility from plain lists.
|
|
34
|
+
|
|
35
|
+
sku_list is optional. When given it must be a list of the same length
|
|
36
|
+
as asin_list, so each entry pairs by position; a mismatch raises here
|
|
37
|
+
rather than sending a body the service will refuse.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
if not asin_list:
|
|
41
|
+
raise ValueError('asin_list is empty; at least one ASIN is required')
|
|
42
|
+
|
|
43
|
+
if sku_list is not None:
|
|
44
|
+
if not isinstance(sku_list, list):
|
|
45
|
+
raise TypeError(
|
|
46
|
+
'sku_list must be a list or None, got %s' % type(sku_list).__name__
|
|
47
|
+
)
|
|
48
|
+
if len(sku_list) != len(asin_list):
|
|
49
|
+
raise ValueError(
|
|
50
|
+
'asin_list and sku_list must have the same length: %d != %d'
|
|
51
|
+
% (len(asin_list), len(sku_list))
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
details = []
|
|
55
|
+
|
|
56
|
+
for index, asin in enumerate(asin_list):
|
|
57
|
+
entry = {'asin': asin}
|
|
58
|
+
if sku_list is not None:
|
|
59
|
+
entry['sku'] = sku_list[index]
|
|
60
|
+
details.append(entry)
|
|
61
|
+
|
|
62
|
+
body = {'adType': ad_type, 'productDetailsList': details, 'locale': locale}
|
|
63
|
+
|
|
64
|
+
logging.debug('get_eligibility_assistant body: %s', body)
|
|
65
|
+
|
|
66
|
+
return self.get_eligibility(body=body, **kwargs)
|
|
67
|
+
|
|
68
|
+
@sp_endpoint('/eligibility/programs', method='POST')
|
|
69
|
+
def get_program_eligibility(self, **kwargs) -> ApiResponse:
|
|
70
|
+
r"""
|
|
71
|
+
get_program_eligibility(body: dict) -> ApiResponse
|
|
72
|
+
|
|
73
|
+
Account level eligibility for the Amazon ad programs, not for a
|
|
74
|
+
product: Sponsored Products, Sponsored Brands, Sponsored Display,
|
|
75
|
+
Stores, DirectToConsumer, Amazon Attribution and the rest.
|
|
76
|
+
|
|
77
|
+
Two media types are declared:
|
|
78
|
+
|
|
79
|
+
application/json the default shape, with skipChecks
|
|
80
|
+
application/vnd.programeligibility.v2+json
|
|
81
|
+
v2, with maxResults and nextToken
|
|
82
|
+
|
|
83
|
+
Pass media_type='v2' for the paginated one.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
media_type = kwargs.pop('media_type', None)
|
|
87
|
+
|
|
88
|
+
if media_type == 'v2':
|
|
89
|
+
content_type = 'application/vnd.programeligibility.v2+json'
|
|
90
|
+
else:
|
|
91
|
+
content_type = 'application/json'
|
|
92
|
+
|
|
93
|
+
headers = {'Content-Type': content_type, 'Accept': 'application/json'}
|
|
94
|
+
|
|
95
|
+
return self._request(
|
|
96
|
+
kwargs.pop('path'),
|
|
97
|
+
data=Utils.convert_body(kwargs.pop('body'), wrap=False),
|
|
98
|
+
params=kwargs,
|
|
99
|
+
headers=headers,
|
|
100
|
+
)
|
|
@@ -16,6 +16,7 @@ from .recommendations import Recommendations
|
|
|
16
16
|
from .selling_accounts import SellingAccounts
|
|
17
17
|
from .label_object_associations import LabelObjectAssociations
|
|
18
18
|
from .geo_locations import GeoLocations
|
|
19
|
+
from .recommendation_types import RecommendationTypes
|
|
19
20
|
|
|
20
21
|
__all__ = [
|
|
21
22
|
"Campaigns",
|
|
@@ -36,4 +37,5 @@ __all__ = [
|
|
|
36
37
|
"SellingAccounts",
|
|
37
38
|
"LabelObjectAssociations",
|
|
38
39
|
"GeoLocations",
|
|
40
|
+
"RecommendationTypes",
|
|
39
41
|
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class RecommendationTypes(Client):
|
|
5
|
+
r"""
|
|
6
|
+
RecommendationTypes(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
|
|
7
|
+
|
|
8
|
+
Amazon Ads API v1 - recommendation types for Sponsored Brands
|
|
9
|
+
|
|
10
|
+
One route, read only, and the product is in the path:
|
|
11
|
+
|
|
12
|
+
POST /adsApi/v1/query/recommendationTypes/sb
|
|
13
|
+
|
|
14
|
+
This family lists the kinds of recommendation that exist. Recommendations
|
|
15
|
+
itself, in ad_api.api.v1.Recommendations, lists the ones the account
|
|
16
|
+
actually has.
|
|
17
|
+
|
|
18
|
+
Only the Sponsored Brands segment is published, and its schemas are
|
|
19
|
+
prefixed SB. The route keeps no SB in its name, so another product would
|
|
20
|
+
arrive as .../sp or .../sd beside it.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
@sp_endpoint('/adsApi/v1/query/recommendationTypes/sb', method='POST')
|
|
24
|
+
def query_sb_recommendation_types(self, **kwargs) -> ApiResponse:
|
|
25
|
+
r"""
|
|
26
|
+
query_sb_recommendation_types(body: dict) -> ApiResponse
|
|
27
|
+
|
|
28
|
+
Amazon Ads API v1 - Query SB Recommendation Types (operationId: SBQueryRecommendationType)
|
|
29
|
+
|
|
30
|
+
Request Body [All optional]
|
|
31
|
+
| **maxResults** (int) : 50..500, default 50
|
|
32
|
+
| **nextToken** (string) : token to navigate to the next page
|
|
33
|
+
|
|
34
|
+
Returns
|
|
35
|
+
| **recommendationTypes** (list<SBRecommendationType>) : 0..500
|
|
36
|
+
| **recommendationTypeId** (string) : [required] a UUID or a unique descriptive string
|
|
37
|
+
| **recommendationTypeTitle** (string) : [required]
|
|
38
|
+
| **nextToken** (string)
|
|
39
|
+
|
|
40
|
+
maxResults starts at 50, so a smaller value is a rejected body rather
|
|
41
|
+
than a shorter page. An empty body is valid and asks for the defaults.
|
|
42
|
+
|
|
43
|
+
Requires one of these permissions:
|
|
44
|
+
advertiser_campaign_view
|
|
45
|
+
"""
|
|
46
|
+
schema_version = 'application/json'
|
|
47
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
48
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.8"
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8/python_amazon_ad_api.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-amazon-ad-api
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.8
|
|
4
4
|
Summary: Python wrapper for the Amazon Advertising API
|
|
5
5
|
Home-page: https://github.com/denisneuf/python-amazon-ad-api
|
|
6
6
|
Author: Daniel Alvaro
|
|
@@ -318,6 +318,7 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
318
318
|
* [Selling Accounts](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/selling_accounts.html#ad_api.api.v1.SellingAccounts.SellingAccounts.query_selling_accounts)
|
|
319
319
|
* [Label Object Associations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/label_object_associations.html#ad_api.api.v1.LabelObjectAssociations.LabelObjectAssociations.query_label_object_associations)
|
|
320
320
|
* [Geo Locations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/geo_locations.html#ad_api.api.v1.GeoLocations.GeoLocations.create_geo_locations)
|
|
321
|
+
* [Recommendation Types](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/recommendation_types.html#ad_api.api.v1.RecommendationTypes.RecommendationTypes.query_sb_recommendation_types)
|
|
321
322
|
|
|
322
323
|
|
|
323
324
|
### [Modules Available Sponsored Products](https://python-amazon-ad-api.readthedocs.io/en/latest/sp.html)
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/SOURCES.txt
RENAMED
|
@@ -109,6 +109,7 @@ ad_api/api/v1/geo_locations.py
|
|
|
109
109
|
ad_api/api/v1/label_object_associations.py
|
|
110
110
|
ad_api/api/v1/labels.py
|
|
111
111
|
ad_api/api/v1/manager_accounts.py
|
|
112
|
+
ad_api/api/v1/recommendation_types.py
|
|
112
113
|
ad_api/api/v1/recommendations.py
|
|
113
114
|
ad_api/api/v1/reports.py
|
|
114
115
|
ad_api/api/v1/selling_accounts.py
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
-
import json
|
|
3
|
-
import logging
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Eligibility(Client):
|
|
7
|
-
r""" """
|
|
8
|
-
|
|
9
|
-
@sp_endpoint('/eligibility/product/list', method='POST')
|
|
10
|
-
def get_eligibility(self, **kwargs) -> ApiResponse:
|
|
11
|
-
r"""
|
|
12
|
-
|
|
13
|
-
get_eligibility(body: (dict, str)) -> ApiResponse
|
|
14
|
-
|
|
15
|
-
Gets a list of advertising eligibility objects for a set of products. Requests are permitted only for products sold by the merchant associated with the profile. Note that the request object is a list of ASINs, but multiple SKUs are returned if there is more than one SKU associated with an ASIN. If a product is not eligible for advertising, the response includes an object describing the reasons for ineligibility.
|
|
16
|
-
|
|
17
|
-
body: | REQUIRED
|
|
18
|
-
|
|
19
|
-
'**adType**': *string*, {'description': 'Set to 'sp' to check product eligibility for Sponsored Products advertisements. Set to 'sb' to check product eligibility for Sponsored Brands advertisements. default: sp. [ sp, sb ]'}
|
|
20
|
-
|
|
21
|
-
'**productDetailsList**': *dict*, {'asin*': 'An Amazon product identifier.', 'sku': 'A seller product identifier'}
|
|
22
|
-
|
|
23
|
-
'**locale**': *string*, {'description': 'Set to the locale string in the table below to specify the language in which the response is returned.'}
|
|
24
|
-
|
|
25
|
-
Returns:
|
|
26
|
-
|
|
27
|
-
ApiResponse
|
|
28
|
-
|
|
29
|
-
"""
|
|
30
|
-
body = Utils.convert_body(kwargs.pop('body'), wrap=False)
|
|
31
|
-
return self._request(kwargs.pop('path'), data=body, params=kwargs)
|
|
32
|
-
|
|
33
|
-
@sp_endpoint('/eligibility/product/list', method='POST')
|
|
34
|
-
def get_eligibility_assistant(self, asin_list: list, sku_list: list = None, ad_type: str = "sp", locale: str = "en-GB", **kwargs) -> ApiResponse:
|
|
35
|
-
r"""
|
|
36
|
-
|
|
37
|
-
get_eligibility_assistant(asin_list: list, sku_list: list = None, ad_type: str = "sp", locale:str = "en-GB") -> ApiResponse
|
|
38
|
-
|
|
39
|
-
Gets a list of advertising eligibility objects for a set of products. Requests are permitted only for products sold by the merchant associated with the profile. Note that the request object is a list of ASINs, but multiple SKUs are returned if there is more than one SKU associated with an ASIN. If a product is not eligible for advertising, the response includes an object describing the reasons for ineligibility.
|
|
40
|
-
|
|
41
|
-
| **asin_list**: 'A list of ASIN: An Amazon product identifier.'
|
|
42
|
-
| **sku_list**: 'A list of SKU: A seller product identifier'
|
|
43
|
-
| **adType**: *string*, {'description': 'Set to 'sp' to check product eligibility for Sponsored Products advertisements. Set to 'sb' to check product eligibility for Sponsored Brands advertisements. default: sp. [ sp, sb ]'}
|
|
44
|
-
| **locale**': *string*, {'description': 'Set to the locale string in the table below to specify the language in which the response is returned. default: en_GB'}
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
|
|
48
|
-
ApiResponse
|
|
49
|
-
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
asin_dict = []
|
|
53
|
-
|
|
54
|
-
required = {}
|
|
55
|
-
required.update({'adType': ad_type})
|
|
56
|
-
|
|
57
|
-
if len(asin_list) > 0 and isinstance(sku_list, str) or sku_list is None:
|
|
58
|
-
for asin in asin_list:
|
|
59
|
-
asin_dict.append({'asin': asin})
|
|
60
|
-
|
|
61
|
-
if sku_list is not None and isinstance(sku_list, list):
|
|
62
|
-
if len(asin_list) == len(sku_list):
|
|
63
|
-
for i in range(len(asin_list)):
|
|
64
|
-
asin_dict.append({'asin': asin_list[i], 'sku': sku_list[i]})
|
|
65
|
-
else:
|
|
66
|
-
logging.error("No coinciden las listas")
|
|
67
|
-
|
|
68
|
-
required.update({'productDetailsList': asin_dict})
|
|
69
|
-
required.update({'locale': locale})
|
|
70
|
-
|
|
71
|
-
data_str = json.dumps(required)
|
|
72
|
-
return self._request(kwargs.pop('path'), data=data_str, params=kwargs)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.5.6"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/advertising_test_account.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/bid_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/keywords_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/landing_page_asins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/negative_keywords.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/optimization_rules.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/targeting_categories.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sb/targeting_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/bid_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/campaigns_budget_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sd/targeting_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/bid_recommendations_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/budget_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaign_negative_targets.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaigns_budget_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/campaings_optimization.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/negative_keywords_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/product_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/sp/product_targeting_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/advertiser_accounts.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_store_editions.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/brand_store_pages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/v1/label_object_associations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/api/validation_configurations.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/access_token_client.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/auth/access_token_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/ad_api/base/credential_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.6 → python_amazon_ad_api-1.5.8}/python_amazon_ad_api.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|